!> 正则表达式 Regular Expression
是一种描述文本规律的表达式。它也可以帮助我们轻松地查找或编辑文件的内容,甚至实现整个文件夹中所有文件的内容替换,文本处理逻辑被大大的简化了。
正则元字符
表达式 |
含义 |
示例 |
示例解释 |
备注 |
\ |
转义符 |
\* |
匹配 符号“*” |
|
[] |
可接收的字符列表 |
[abcd] |
a、b、c、d中任意一个字符 |
|
[^] |
不可接收的字符列表 |
[^abcd] |
除a、b、c、d外的任意一个字符,包括数字和特殊字符 |
|
| |
或表达式,匹配前面或者后面的表达式 |
ad|cd |
ab或者cd |
|
( ) |
将子表达式分组 |
(abc) |
将字符串abc作为一组 |
|
. |
匹配除”\r\n”之外的任何单个字符 |
a..b |
以a开头,b结尾,中间包括2个任意字符的长度为4的文本 |
若要匹配包括”\r\n”在内的任意字符,请使用诸如”[\s\S]”之类的模式 |
\d |
匹配任何数字,如 [0-9] |
\d{3} |
包含3个数字的字符串 |
|
\D |
匹配任何非数字,如[^0-9 ] |
\D(\d)* |
以单个非数字字符开头,后接任意个数字 |
|
\w |
匹配单个数字、大小写字母字符,如[0-9a-zA-Z] |
\w{4} |
长度为4的数字字母字符串 |
|
\W |
匹配单个非数字、大小写字母字符,相当于[^0-9a-zA-Z] |
\W+ |
以至少1个非数字字母字符开头 |
|
\b |
匹配一个字边界,即字与空格间的位置 |
er\b |
匹配”never”中的”er”,但不匹配”verb”中的”er” |
Boundary |
\B |
非字边界匹配 |
er\b |
匹配”verb”中的”er”,但不匹配”never”中的”er” |
|
\s |
匹配任何空白字符,包括空格、制表符、换页符等。与 [\f\n\r\t\v] 等效。 |
|
|
|
\S |
匹配任何非空白字符。与[^\f\n\r\t\v] 等效。 |
|
|
|
\f |
换页符匹配。如 \x0c 和 \cL 。 |
|
|
|
\n |
换行符匹配。等效于 \x0a 和 \cJ 。 |
|
|
|
\r |
匹配一个回车符。等效于 \x0d 和 \cM 。 |
|
|
|
\t |
制表符匹配。与 \x09 和 \cI 等效。 |
|
|
|
\v |
垂直制表符匹配。与 \x0b 和 \cK 等效。 |
|
|
|
限定符
符号 |
含义 |
示例 |
示例解析 |
备注 |
* |
指定字符重复0次或n次 |
\w* |
匹配任意个数字和字母组成的字符串 |
|
+ |
指定字符重复1次或n次 |
[0-9]+ |
至少1个 0-9 的数字 |
|
? |
指定字符重复0次或1次 |
2(.\d)? |
2开始的整数或者小数 |
当此字符紧随任何其他限定符(、+、?、{n}、{n,}、{n,m*})之后时,匹配模式是”非贪心的”。如,在字符串”aaaa”中,”a+?”只匹配单个”a”,而”a+”匹配所有”a”; (?模式标识) –(?i)->不区分大小写 (?s)单行匹配 (?#comment)注释 |
{n} |
长度为n个字符 |
[0-9]{m} |
m个0-9 的数字字符串 |
|
{n,} |
长度为至少为n个字符 |
[0-9]{n,} |
不少于n个0-9 的数字字符串 |
|
{n,m} |
长度为n至m间个数的字符 |
[0-9]{n,m} |
不少于n个,且不多于m个0-9 的数字字符串 |
|
^ |
起始字符 |
^\d+ |
已数字开始且全部是数字的字符串 |
|
$ |
结束字符 |
^\d+[a-z]+$ |
已数字开始且数字后面接小写字母的字符串 |
|
自表达式匹配
符号 |
含义 |
示例 |
示例解释 |
|
(pattern) |
匹配 pattern 并捕获该匹配的子表达式。可以使用 $0…$9 属性从结果”匹配”集合中检索捕获的匹配 |
(1[35678][0-9])\d{4}(\d{4}) |
15376562312. 匹配后 $1为153 $2为2312 |
|
(?:pattern) |
匹配 pattern 但 不捕获 该匹配的子表达式 |
`industr(?:y |
ies)` |
匹配`industry |
(?=pattern) |
执行正向预测先行搜索的子表达式,匹配处于匹配 pattern 的字符串的起始点的字符串。它是一个非捕获匹配 |
`Windows (?=95 |
98 |
NT |
(?!pattern) |
执行反向预测先行搜索的子表达式,该表达式匹配不处于匹配 pattern 的字符串的起始点的搜索字符串。它是一个非捕获匹配 |
`Windows (?=95 |
98 |
NT |
环视
主要限制匹配文本左右两边的数据
正则 |
名称 |
含义 |
示例 |
示例解释 |
(?<=Y) |
肯定逆序环视 |
左边是 Y |
(?<=\d+)¥ |
匹配左边是数据的¥;234¥ |
(?<!Y) |
否定逆序环视 |
左边不是Y |
(?<!\d+)¥ |
匹配左边不是数据的¥;aab¥ |
(?=Y) |
肯定顺序环视 |
右边是Y |
(?=\d+)¥ |
匹配右边是数据的¥;¥234 |
(?!Y) |
否定顺序环视 |
右边不是Y |
(?!\d+)¥ |
匹配右边不是数据的¥;¥aab |
起始和结束符对比
语言 |
起始符 |
结束符 |
|
java |
^ |
$ |
|
javascript |
^ |
$ |
|
go |
\A |
\z |
|
python |
\A |
\Z |
|
java示例
作者:admin 创建时间:2023-04-20 16:07
最后编辑:admin 更新时间:2024-05-14 10:08