java常用正则表达式

1、特殊字符

注意:若要原样匹配下列字符,需要首先转义字符,即在下列特殊字符前加\,例如需要匹配 + ,则使用表达式 \+

字符 释义 示例
* 零次或多次匹配前面的字符或子表达式,等效于{0,} za*与z和zaa等匹配
+ 一次或多次匹配,等效于{1,} za+与za和zaaa等匹配
? 零次或多次匹配,等效于{0,1} za?只能与z和za匹配
^

1、匹配字符串开始的位置,

2、如果将^作为括号内第一个字符,则会对字符集求反

1、^\d{3}与搜索的字符开始处的三个数字匹配

2、[^abc]表示除a、b、c三个字符外的其他所有字符

$ 匹配字符串结束的位置 \d{3}$表示与搜索字符串结尾处的3个数字匹配
. 匹配除了\n换行符外的所有单个字符 a.c可以与abc、a-c等诸如此类的字符匹配
[] 标记括号表达式的开头和结尾 [1-4]匹配1到4的整数,[^aAeEiIoOuU]匹配所有非元音字符
{} 标记限定符表达式的开头和结尾 a{2,3}匹配2到3个a组成的字符串
() 标记子表达式的开始和结尾 a(\d)可以与a0到a9匹配
| 指示可以在两个或多个项中选择 z|food可以与z和food匹配,(z|f)ood可以与zood和food匹配
/ 表示JScript中的文本正则表达式的开头和结尾,在第二个“/”后添加单字符标志可以指定搜索行为。 /abc/gi 是与“abc”匹配的 JScript 文本正则表达式。 g(全局)标志指定查找模式的所有匹配项,i(忽略大小写)标志使搜索不区分大小写。
\ 将下一字符标记为特殊字符、文本、反向引用、八进制转义符 \n与换行符匹配,\(与(匹配,\\与\匹配

 

2、元字符

字符释义示例
\b 与一个字符串边界匹配,即字与空格间的位置 er\b 与“never”中的“er”匹配,但与“verb”中的“er”不匹配。
\B 非边界字匹配。 er\B 与“verb”中的“er”匹配,但与“never”中的“er”不匹配。
\d 数字匹配,等效于[0-9] \d{2}匹配两位数字
\D 非数字匹配,等效于[^0-9] \D{2}匹配除了数字外的两个字符
\w 与以下任意字符匹配:A-Z、a-z、0-9 和下划线。等效于 [A-Za-z0-9_]。 在搜索字符串“The quick brown fox…”中,\w+ 与“The”、“quick”、“brown”和“fox”匹配。
\W 与除数字字母下划线的字符匹配 在搜索字符串“The quick brown fox…”中,\W+ 与“…”和所有空格匹配。
[xyz] 字符集,表示与x、y、z三个中任意一个匹配 [abc] 与“plain”中的“a”匹配。
[^xyz] 反向字符集,与非指定的其他字符匹配 [^abc] 与“plain”中的“p”、“l”、“i”和“n”匹配。
[a-z] 字符范围,匹配指定范围之内的字符 [a-z] 与“a”到“z”范围内的任何小写字母字符匹配。
[^a-z] 反向字符范围,匹配除指定范围之内的所有字符 [^a-z] 与不在范围“a”到“z”内的任何字符匹配。
{n} 正好匹配 n 次。 n 是非负整数。 o{2} 与“Bob”中的“o”不匹配,但与“food”中的两个“o”匹配。
{n,} 至少匹配 n 次。 n 是非负整数。 o{2,} 与“Bob”中的“o”不匹配,但与“foooood”中的所有“o”匹配。
{n,m} 匹配至少 n 次,至多 m 次。 n 和 m 是非负整数,其中 n <= m。 逗号和数字之间不能有空格。 在搜索字符串“1234567”中,\d{1,3} 与“123”、“456”和“7”匹配。

 

3、非打印字符

 

字符释义
\f 换页符
\n 换行符
\r 回车符
\s 如何空白字符,其中包括空格,制表符换页符等
\S 如何非空白字符
\t Tab字符

 

 

4、优先级顺序

 

运算符说明
\ 转义符
), (?:), (?=), [] 括号和中括号
*、+、?、{n}、{n,}、{n,m} 限定符
^、$、\任何元字符 定位点和序列
| 替换

 示例:判断一个字符串中是否包含某个子字符串

判断字符串中是否包含前五天的日期:

//.:除\n外的所有所有单个字符
//*:出现0次或多次
//|:或者,括号中的意思是出现下列五个日期中的一个
//正则表达式的意思是:字符串中出现下列五个日期,并且结尾可以出现0个或多个\n换行符
String regex= ".*((2021-06-23)|(2021-06-22)|(2021-06-21)|(2021-06-20)|(2021-06-19)).*\n*";
String str = "阀值告警:当前时间 2021-06-23 14:17:37,出水PH值 数值为 7.773884 低于下限值:9\n";
System.out.println(str.matches(regex));  //true

 

 

 

参考资料: http://msdn.microsoft.com/zh-cn/library/ae5bf541

 

posted @ 2020-08-03 11:20  张财华  阅读(287)  评论(0编辑  收藏  举报