
Regex

最基础的正则表达式匹配
regex
\b
单词的边界.
除了换行符以外的任何字符\d
匹配一位数字[0-9]
\s
匹配任意的空字符\w
匹配字母、数字、下划线、汉字[a-z0-9A-Z_]
^
匹配字符串的开始$
匹配字符串的结束|
分枝
字符转义
如何想查找
* . \
需要使用转义字符\* \. \\
重复
*
重复零次或更多次+
重复一次或更多次?
重复零次或一次{n}
重复n次{n, m}
重复n到m次{n, }
重复n次或更多次
反义
\W
匹配任意不是字母、数字、下划线、汉字的字符\S
匹配任意不是空白符的字符\D
匹配任意非数字的字符\B
匹配不是单词开头或结束的位置[^x]
匹配除了x以外的任意字符
分组相关
(exp)
匹配exp,并捕获其到自动命名的组中(? <name> exp) (? 'name' exp)
自己命名,\name
使用(?:exp)
只匹配不捕获(?=exp)
匹配exp前面的位置(?<=exp)
匹配exp后面的位置(?!exp)
匹配后面跟的不是exp的位置 ,比[^exp]
更好,因为不占用字符(?<!exp)
匹配前面不是exp的位置(?#comment)
注释
懒惰限定符
*?
重复任意次,但尽量少重复+?
重复一次或更多次,但尽可能少重复??
重复零次或一次,但尽可能少重复{n, m}?
重复n到m次,尽可能少重复{n, }?
重复n次以上,尽可能少重复
递归匹配
(?'group')
把捕获的内容命令为group,并压入堆栈(?'-group')
把指定内容弹出堆栈,如果堆栈为空,该分组匹配失败(?(group)yes|no)
堆栈上还存在指定内容,匹配yes部分,否则匹配no部分(?|)
匹配总是失败