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部分(?|)匹配总是失败