1、特殊字符
注意:若要原样匹配下列字符,需要首先转义字符,即在下列特殊字符前加,例如需要匹配 + ,则使用表达式
字符 | 释义 | 示例 |
* | 零次或多次匹配前面的字符或子表达式,等效于{0,} | za*与z和zaa等匹配 |
+ | 一次或多次匹配,等效于{1,} | za+与za和zaaa等匹配 |
? | 零次或多次匹配,等效于{0,1} | za?只能与z和za匹配 |
^ |
|
|
$ | 匹配字符串结束的位置 | d{3}$表示与搜索字符串结尾处的3个数字匹配 |
. | 匹配除了 换行符外的所有单个字符 | a.c可以与abc、a-c等诸如此类的字符匹配 |
[] | 标记括号表达式的开头和结尾 | |
{} | 标记限定符表达式的开头和结尾 | a{2,3}匹配2到3个a组成的字符串 |
() | 标记子表达式的开始和结尾 | a(d)可以与a0到a9匹配 |
| | 指示可以在两个或多个项中选择 | |
/ | 表示JScript中的文本正则表达式的开头和结尾,在第二个“/”后添加单字符标志可以指定搜索行为。 | /abc/gi 是与“abc”匹配的 JScript 文本正则表达式。 g(全局)标志指定查找模式的所有匹配项,i(忽略大小写)标志使搜索不区分大小写。 |
将下一字符标记为特殊字符、文本、反向引用、八进制转义符 |
字符 | 释义 | 示例 |
---|---|---|
与一个字符串边界匹配,即字与空格间的位置 | er 与“never”中的“er”匹配,但与“verb”中的“er”不匹配。 | |
B | 非边界字匹配。 | erB 与“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”匹配。 |
释义 | |
---|---|
f | 换页符 |
换行符 | |
回车符 | |
s | 如何空白字符,其中包括空格,制表符换页符等 |
S | 如何非空白字符 |
说明 | |
---|---|
转义符 | |
), (?:), (?=), [] | 括号和中括号 |
*、+、?、{n}、{n,}、{n,m} | 限定符 |
^、$、任何元字符 | 定位点和序列 |
| |
示例:判断一个字符串中是否包含某个子字符串
判断字符串中是否包含前五天的日期:
//.:除 外的所有所有单个字符 //*:出现0次或多次 //|:或者,括号中的意思是出现下列五个日期中的一个 //正则表达式的意思是:字符串中出现下列五个日期,并且结尾可以出现0个或多个 换行符 String regex= ".*((2021-06-23)|(2021-06-22)|(2021-06-21)|(2021-06-20)|(2021-06-19)).* *"; String str = "阀值告警:当前时间 2021-06-23 14:17:37,出水PH值 数值为 7.773884 低于下限值:9 "; System.out.println(str.matches(regex)); //true