Loading

正则表达式

测试网站:https://regexr.com/

正则表达式语法

普通字符

没有特殊限定的时候匹配一个相同的字符

简单转义字符

\n换行符
\t制表符
\字符字符本身

标准字符集合

能够与多种字符匹配的表达式

区分大小写,大写取反

\d0~9中任一字符
\w 字母数字下划线,A~Z,a~z,0~9,_
\s 空格、制表符、换行符等任一空白符
. 任何一个字符

自定义字符集合

[]匹配方式,匹配方括号中的任一字符

[ab5@]匹配"a"、"b"、"5"或"@"
[^abc]匹配"a"、"b"、"c"以外的任一字符
[f-k]匹配"f"~"k"中的任一字符
[^A-F0-3]匹配"A"~"F"、"0"~"3"以外的任一字符

特殊符号,被包含到中括号中,失去特殊意义,除"^"和"-"以外

标准字符集,除小数点外,如果被包含于中括号,自定义字符集包含该集合。如:

  • [\d.\-+]将匹配:数字、小数点、"-" 、"+"

量词

修饰匹配次数的特殊符号

{n}表达式重复n次
{n,m} 表达式至少n次,至多m次
{n,} 表达式至少n次
?匹配0或1次
+至少1次
*0次到任意次

匹配次数中的贪婪模式(匹配字符越多与好,默认)

匹配次数中的非贪婪模式(匹配字符越少越好,修饰匹配次数的特殊符号后面加"?",例:"\d?")

字符边界

字符所处的位置,零宽(不占位)

^字符串开始
$字符串结束
\b单词边界(前面和后面的字符不全是\w)

正则表达式匹配模式

IGNORECASE忽略大小写模式

  • 匹配时忽略大小写
  • 默认情况下,区分大小写

SINGLELINE单行模式

  • 整个文本看作一个字符串
  • 小数点“.”可匹配任一字符,包含“\n”

MULTILINE多行模式

  • 每行都是一个字符串,都有开头和结尾
  • 匹配开始\A,匹配结束\Z

选择符和分组

|分支结构,表示“或”的关系
()捕获组:1、括号中的作为整体
2、取结果时,括号中的内容可以单独得到
3、从左括号开始编号,第一个“(”是1,0为整个表达式
(?:expression)非捕获组,不保存()中的信息,节省内存开支

反向引用(\nnn)

  • 通过反向引用可以对分组已捕获的字符串进行引用

预搜索(零宽断言、环视)

对子表达式匹配,匹配内容不计入匹配结果,零宽

(?=exp)后面能匹配表达式exp
(?<=exp) 前面能匹配表达式exp
(?!exp) 后面不能匹配表达式exp
(?<!exp) 前面不能匹配表达式exp
posted @ 2020-02-08 17:34  shimeath  阅读(121)  评论(0)    收藏  举报