常用正则表达式

2023-06-06  本文已影响0人  简单点的笨演员
  1. 位置类:
^    匹配字符串的开始(或行的结束)
$    匹配字符串的结束(或行的结束)
\b   匹配单词的开始和结束
  1. 字符类:
\d   匹配任意的单个数字
.    匹配任意的单个字符(不包括换行)
\s   匹配任意的空白符,包括空格,制表符(Tab),换行符,中文全角空格等
\w   匹配字母或数字或下划线或汉字
[.?!]   匹配括号里的某个字符(示例是标点符号(.或?或!),注意不需要加转义)
[0-9]   匹配括号里的某个字符,以范围表示方式
  1. 字符类(反义)
\W    匹配任意不是字母,数字,下划线,汉字的字符
\S    匹配任意不是空白符的字符
\D    匹配任意非数字的字符
\B    匹配不是单词开头或结束的位置
[^x]  匹配除了 x以外的任意字符
[^aeiou] 匹配除了 aeiou这几个字母以外的任意字符
  1. 重复类:
*    表示前面的字符匹配重复任意次(可能是 0 次)
+    表示前面的字符匹配重复任意次(不能是 0 次)
?    表示前面的字符匹配重复0或1次
{n}  表示前面的字符有n个
{m,n}  表示前面的字符有最少m个,最多n个
  1. 重复类(懒惰类):
*?    表示前面的字符匹配重复任意次(可能是 0 次),但尽可能少重复
+?    表示前面的字符匹配重复任意次(不能是 0 次),但尽可能少重复
??    表示前面的字符匹配重复0或1次,但尽可能少重复
{n}?  表示前面的字符有n个,但尽可能少重复
{m,n}?  表示前面的字符有最少m个,最多n个,但尽可能少重复

6.字符转义

\    类似C++的转义符,将某个代表符表示为自身
  1. 其他:
|   把不同的规则分隔开,提供类似C++“或”的语义,注意其语义会到下一"|"或者右括号
()  子表达,也叫做分组
\n   引用第n个子表达式
?<Word>  给子表达式命名,如(?<Word>\w+),这样就把\w+的组名指定为Word了
\k<Word>  引用Word子表达式
(?=exp)   也叫零宽先行断言,它匹配文本中的某些位置,这些位置的后面能匹配给定的后缀exp。比如\b\w+(?=ing\b),匹配以 ing 结尾的单词的前面部分(除了 ing 以外的部分),如果在查找I'm singing while you're dancing.时,它会匹配sing和 danc。
(?<=exp)  也叫零宽后行断言,它匹配文本中的某些位置,这些位置的前面能给定的前缀匹配exp。比如(?<=\bre)\w+\b 会匹配以re开头的单词的后半部分(除了 re以外的部分),例如在查找reading a book 时,它匹配 ading。

更多零宽匹配和平衡组见:正则表达式.pdf(正则表达式 30 分钟入门教程(第二版))
上一篇 下一篇

猜你喜欢

热点阅读