写给自己的JAVA工程师之路-正则表达式

news/2024/11/30 5:43:39/

1 认识正则表达式

判断字符串是否由数字组成

 

最原始实现方式

 

public class demo {public static void main(String[] args) {String a = "123123" ;System.out.println(isNumber(a));}public static boolean isNumber(String str) {char [] ch = str.toCharArray();for(int x = 0 ; x < ch.length ; x++){if(ch[x] < '0' || ch[x] > '9'){return false;}}return true;}
}

 

使用正则表达式

 

public class demo {public static void main(String[] args) {String a = "123123" ;System.out.println(a.matches("\\d+"));}
}

很明显,正则表达式给我们的感受就是减少了代码量,加强了对String的操作支持

 

2 常用正则表达式

 

正则表达式起源1.4

支持包是java.util.regex,主要有两个类: Pattern , Matcher

 

1 字符(如果不加入量词则为单个字符)

a:表示由自定字符a表示

\\ :匹配转义字符

\t:匹配\t的转义字符

\n:匹配\n的转义字符

2 字符范围(如果不加入量词则为单个字符)

[abc]:表示可能是由a,b,c的任意一位[^abc]:表示不是a,b,c的任意一位
[a-zA-Z]:表示任意一位字母(大写或小写)
[0-9]:表示由任意一位数字组成

3 简化表达式(如果不加入量词则为单个字符)

.:表示任意一位字符

\d:表示任意一位数字

\D:表示任意一位非数字

\w:表示任意一位字符,由字母,数字,_所组成

\W:表示不是由字母,数字,_所组成

\s:表示任意的一位空格

\S:表示任意的一位非空格

4 边界匹配

^:表示正则匹配的开始

$:表示正则匹配的结束

 

5 量词描述(如果没有量词,那么每一个出现的正则只能匹配一个字符)

表达式?:表示此正则表达式可以出现0次或1次

表达式 +:表示此正则表达式可以出现1次或多次

表达式 *:表示此正则表达式可以出现0次,1次或多次

表达式{n}:表示正则表达式正好出现n次

表达式 {n,}:表示此正则表达式可以出现n次以上,包括n次

表达式 {n,m}:表示此正则表达式可以出现n~m次

 

6 逻辑运算

X正则Y正则:表示X正则之后紧跟着验证Y正则

X正则|Y正则:表示两个正则选一个

():一组正则

 

3 正则匹配

public class demo {public static void main(String[] args) {String a = "10.1" ;String b = "1111-11-11" ;String c = "(1111)-1111111" ;// 1111-1111111, 1111111String d = "asa-asd.asd_asd@ada-a_a.a.com";
//		System.out.println(a.matches("\\d+(\\.\\d+)")); 匹配小数
//		System.out.println(b.matches("\\d{4}-\\d{2}-\\d{2}")); 匹配日期
//		System.out.println(c.matches("((\\d{4}-?)|(\\(\\d{4}\\)-?))\\d{7}")); 匹配电话号码
//		System.out.println(d.matches("[a-zA-Z][a-zA-Z0-9_\\-\\.]{5,29}@[a-zA-Z0-9_\\-\\.]+\\.(com|net|com\\.cn)")); 匹配邮箱}
}

 

4 java.util.regex包的直接操作

 

1 Pattern类

public class demo {public static void main(String[] args) {String str = "asd879adad8sa7dadjahs";String regex = "[^a-zA-Z]+";Pattern pat = Pattern.compile(regex); // 编译正则System.out.println(Arrays.toString(pat.split(str)));}}

 

2 Matcher类

public class demo {public static void main(String[] args) {String str = "100" ;String regex = "\\d+" ;Pattern pat = Pattern.compile(regex); // 编译正则Matcher mat = pat.matcher(str) ;System.out.println(mat.matches());}
}


 


http://www.ppmy.cn/news/234425.html

相关文章

web开发之路——jQuery(下)

一、小例子——tab菜单 <!DOCTYPE html> <html langen> <head><meta charset"UTF-8"><title></title><!-- line-height:33px; 让标题的内容居中显示 padding:5px; 边距--><style>.tab-box .box-menu{background-c…

小程序制作海报,保存本地

<view stylewidth:100%;> <image stylewidth:100%; src"../../img/china_img.png"></image> </view> <view classCONTECT>欢迎你是神啊深刻的三大杀菌剂啥都会受到大叔大婶帝国时代干</view> <view stylewidth:100%;margin-t…

欢迎使用CSDN-markdown编辑器;手残啊呜发

快捷键-加粗 按按按Ctrl B -斜体 CTRL I-引用 CTRL Q-插入链接 Ctrl L键键键-插入代码 按下按下按下Ctrl K-插入图片 按按按Ctrl G-提升标题 Ctrl H键键键-有序列表 Ctrl O键键键-无序列表 按按按Ctrl U-横线 按按按Ctrl [R-撤销按Ctrl Z键键-重做 按Ctrl Y ##减…

关于感兴趣区域和掩膜的问题!

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 https://blog.csdn.net/JiaFanChen/article/details/51149338 本文章主要对感兴趣区域ROI的操作&#xff08;对于ROI区域图像叠加&#xff09;说明 在图像处理的领域&#xff0c;我们常常需要去设置…

python笔记:太困了,读取并显示按行业分类的股票数据提提神

先升级pip&#xff0c;要不tushare安装不上&#xff0c;使用Anaconda Prompt执行命令&#xff1a; python -m pip install --upgrade pip 再安装tushare&#xff1a; pip install tushare # -*- coding: utf-8 -*- """ Created on Tue May 7 16:16:17 2019…

Vue基础语法(样式绑定、时间处理器、表单、组件)

样式绑定 一、 class绑定 使用方式&#xff1a;v-bind:class“expression” expression的类型&#xff1a;字符串、数组、对象 二、 style绑定 v-bind:style“expression” expression的类型&#xff1a;字符串、数组、对象 样式绑定.html <!DOCTYPE html> <html&…

wxpython学习记录

写在前面的话 对于wxpython的学习我推荐三个阶段&#xff0c;第一阶段是完全无基础学习阶段&#xff0c;建议使用 UI 软件进行布局&#xff0c;第二阶段是深化阶段&#xff0c;对wxpython有了一定的基础&#xff0c;可以尝试纯代码布局&#xff0c;加深印象&#xff0c;第三阶…

扩展语法GFM ---

推展语法GFM 在众多Markdown拓展语法中&#xff0c;GFM自宫了包括表格、任务列表、删除线、围栏代码、Emoji等在内的标记语法。 删除线 语法&#xff1a;~~被删除的文字~~ 实例&#xff1a;sadawdasascassa爱仕达群翁1234565 表情符号 语法&#xff1a;:表情代码: 实例&…