.
可以匹配任何内容,除了换行符 如果想在字符串中匹配`.`则需要转义`\.`,在Java中则需`\\.`举例A.B.C.D.
可以匹配A+B-C=DE
...\\....\\....\\....
可以匹配abc.def.ghi.jkx
(其中包含的字母可用任意字符替换)
\d与\D
`\d`可以匹配数字,`\D`匹配除了数字以外的所有字符举例
xxXxxXxxxx, 其中x代表数字, X代表非数字
表达式可写作\\d{2}\\D\\d{2}\\D\\d{4}
,其中{n}是标志限定符,\\d{n}
就要匹配n次\\d
\s与\S
`\s`可以匹配空格,`\S`匹配除了空格以外的所有字符举例
XXxXXxXX,其中x代表空格,X代表非空格
表达式写作\\S{2}\\s\\S{2}\\s\\S{2}
\w与\W
`\w`可以匹配word(字母数字下划线),`\W`匹配除了字母数字下划线以外的所有字符举例
xxxXxxxxxxxxxxXxxx,其中x代表字母数字下划线,X代表除此以外的所有字符
表达式可写作\\w{3}\\W\\w{10}\\W\\w{3}
^与$
`^`可以匹配字符串头,`$`匹配字符串尾举例
- Xxxxx.,其中X表示数字,x表示word,这个字符串必须以数字开头,以字符.结尾,字符串长度需为6
表达式可写作^\\d\\w{4}\\.$
- 字符串由大小写字母组成并以s结尾
表达式可写作^[a-zA-Z]*s$
[]
`[]`可以匹配括号内的所有字符举例
有字符串S:长度为6;第一个字符为1,2或3;第二个字符为1,2或0;第三个字符为下x,s或0;第四个字符为3,0,A或a;第五个字符为x,s或u;第六个字符为.或,
表达式可写作^[1-3][0-2][xs0][30Aa][xsu][.,]$
`^`在括号中使用时表示不接受括号表达式中的字符集合
举例
- 字符串长度大于等于5;第一个字符为小写字母;第二个字符为正数;第三个字符为非小写字母;第四个字符为非大写字母;第五个字符为大写字母
表达式可写为^[a-z][1-9][^a-z][^A-Z][A-Z]
- 字符串长度为6;第一个字符不是数字;第二个字符不是aeiou;第三个字符不是bcDF;第四个字符不是\r\n\t\f或空格;第五个字符不是AEIOU;第六个字符不是.,
表达式可写作^[^0-9][^aeiou][^bcDF][^\r\n\t\f ][^AEIOU][^.,]$
{x}
`{x}`匹配前面的模式x次举例
字符串长度为45;前40个字符为字母(包含大小写)或偶数;后5个字符为奇数或空白字符
表达式可写作^[a-zA-Z02468]{40}[13579\r\n\t\f ]{5}$
{x,y}
`{x,y}`匹配前面的模式x~y次。`{x,}`至少匹配x次举例
字符串1~2个数字开头;然后跟3或3个以上字母(包含大小写);以0~3个.结尾
表达式可写作^\\d{1,2}[a-zA-Z]{3,}\\.{0,3}$
*
匹配前面的模式0次或多次举例
字符串以2个或2个以上数字开头;然后跟上0或多个小写字母;以0或多个大写字母结尾
表达式可写作^\\d{2,}[a-z]*[A-Z]*$
+
匹配前面的模式1次或多次使用方法与*
类似
\b
匹配单词边界举例
匹配单词:以元音字母aeiouAEIOU开头;匹配的单词可以是任意长度,且由大小写字母组成;要匹配单词边界
表达式可写作:\\b[aeiouAEIOU][a-zA-Z]*\\b
注意这里是匹配单词边界不是整个字符串所以不使用^$
()
捕获组举例
匹配3个或以上的连续的ok
表达式可写作:(ok){3,}
| 替代匹配
匹配多项中的一项举例
字符串需以 Mr., Mrs., Ms., Dr. or Er.开头;剩余部分为一个或多个英文字母
表达式可写作:^(Mr|Mrs|Ms|Dr|Er)\\.[a-zA-Z]+$
\group_number
匹配相同文本,group_number表示跟哪一个组进行匹配。比如\1就是和从左到右数,第一个捕获组()进行相同文本的匹配举例
表达式可写作:^([a-z])(\\w)([\r\n\t\f ])(\\W)(\\d)(\\D)([A-Z])([a-zA-Z])([aeiouAEIOU])([^\r\n\t\f ])\\1\\2\\3\\4\\5\\6\\7\\8\\9\\10$
前向引用
(\\2two|(one))+
可以匹配oneonetwo(\\2amigo|(go!))+
可以匹配go!go!amigo
例题
表达式可写作:^(\\2tic|(tac))+
正向预查
regex_1(?=regex_2)
匹配后面紧跟着regex_2的regex_1。需要注意的是:regex_2并不会被返回举例
在字符串中匹配出后面紧跟oo的o
表达式可写作:o(?=oo)
(?<=regex_2)regex_1
查找regex_2后面的regex_1举例
(?<=[a-z])[aeiou]
,匹配he1o- 匹配所有出现在奇数数字之后的数字,表达式写作:
(?<=[13579])\\d
反向预查
regex_1(?!regex_2)
匹配后面不跟着regex_2的regex_1举例
c(?!o)
可以匹配到chocolate- 匹配字符串中所有后面不仅跟相同字符的字符,比如字符串goooo,可以匹配goooo
表达式可写作:(.)(?!\\1)
(?<!regex_2)regex_1
匹配前面不是regex_2的regex_1举例
(?<![a-z])[aeiou]
,匹配he1o- 匹配前面不是aeiouAEIOU的所有字符,表达式可写作:
(?<![aeiouAEIOU]).