正则表达式

2019-03-19  本文已影响0人  梦想成真213
匹配位置:

\b:单词的开头或者结束,单词的分界处
^:匹配字符串的开始
$:匹配字符串的结束

匹配字符

.:匹配除换行符以外的任意字符
\d:匹配一位数字
\s:匹配任意空白符,包括空格,tab制表符,换行符,中文全角空格
\w:匹配字母或数字或下划线或汉字等

字符转义

\:用来转义特定字符,例如\\,\/,\{,\},\(,\),\.,\*

重复

*:数量,匹配*前面的内容连续使用任意次(可以是0次)
+:匹配+前面的内容1次或者多次(必须有1次)
?:重复0次或1次
{n}:重复n次
{n,}:重复n次或者更多次
{n,m}:重复n到m次(不能少于n次,不能多于m次)

匹配字符范围

[0-9]:类似\d,匹配0-9中的任意一位数字
[a-zA-Z]:类似\w(只有英文的话),匹配a-z,A-Z之间的任意一个字符
[aeiou]:匹配任意一个英文元音字母
[.?,!]:匹配标点符号(.或?或,或!

分支条件

|:不同规则用|隔开,例如:0\d{2}|\d{3}[- ]?\d{8}

分组

():分组用来重复多个字符的匹配次数,例如:(\d{1,3}\.){3}\d{1,3}(\d{1,3}\.)整个分组重复3次

反义

\W:匹配任意不是字母、数字、下划线、汉字的字符
\S:匹配任意不是空白符的字符
\D:匹配任意非数字的字符
\B:匹配任意不是单词开始或结束的位置
[^x]:匹配除了x以外的任意字符
[^aeiou]:匹配除了aeiou这几个字符以外的任意字符

后向引用

后向引用:用于重复搜索前面某个分组匹配的文本。
常用分组语法:

捕获:

(exp):匹配exp,并捕获文本到自动命名的组里
(?<name>exp):匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)
(?:exp):匹配exp,不捕获匹配的文本,也不给此分组分配组号

零宽断言

(?=exp):匹配exp前面的位置
(?<=exp):匹配exp后面的位置
(?!exp):匹配后面跟的不是exp的位置
(?<!exp):匹配前面不是exp的位置

注释

(?#comment):这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读

贪婪与懒惰

当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符。以这个表达式为例:a.*b,它将会匹配最长的以a开始,以b结束的字符串。如果用它来搜索aabab的话,它会匹配整个字符串aabab。这被称为贪婪匹配

懒惰(非贪婪)限定符
*?:重复任意次,但尽可能少重复
+?:重复一次或更多次,但尽可能少重复
??:重复0次或1次,但尽可能少重复
{n,m}?:重复n到m次,但尽可能少重复
{n,}?:重复n次以上,但尽可能少重复

参考:https://deerchao.net/tutorials/regex/regex.htm

上一篇 下一篇

猜你喜欢

热点阅读