2019-07-29

正则表达式中常用的元字符

  • ‘.’匹配除换行符之外的任意字符。
  • ’\w‘ 匹配中英文字符,数字或者下划线。
  • ‘\s’ 匹配任意的空白符,空格,制表符或者换行符。
  • ‘\d’ 匹配数字。
  • ’\b‘ 匹配单词的结束或者开始。
  • ‘^’ 匹配字符串的开始。
  • ’$‘ 匹配字符串的结尾。

当然如果要匹配的字符串本身包含元字符的话,那么你就需要使用转义字符’\‘来取消元字符在表达式中的特殊意义。如下:当你需要匹配www.XtHhua.com,表达式就应该这样写 :www.XtHhua.com

正则表达式中常用的限定符 即指定数量的代码

  • ’*‘ 重复零次或者多次。
  • ’+‘ 重复一次或者更多次。
  • ’?‘ 重复零次或者一次。
  • '{n}' 重复n次。
  • '{n,}' 重复n次或者更多次。
  • '{n,m}' 重复n到m次。

常用的反义代码

  • ‘\W’ 匹配任意不是中英文字符,数字或者下划线。
  • ’\S‘ 匹配任意不是空白符的字符。
  • '\D' 匹配任意非数字的字符。
  • ’\B‘ 匹配不是单词开头或结束的位置。
  • ’[^x]‘ 匹配除了x以外的任意字符。
  • ’[^aeiou]‘ 匹配除了aeiou以外的任意字符。

后向引用
使用小括号指定一个子表达式后,匹配这个子表达式的文本可以在表达式或其它程序中作进一步的处理。默认情况下,每个分组会自动拥有一个组号,规则是:从左向右,以分组的左括号为标志,第一个出现的分组的组号为1,第二个为2,以此类推。

后向引用用于重复搜索前面某个分组匹配的文本。例如,\1代表分组1匹配的文本。

如下所示例子:表达式 \b(\w+)\b\s+\1\b 可以用来匹配重复的单词,像go go, 或者kitty kitty。这个表达式首先是一个单词,也就是单词开始处和结束处之间的多于一个的字母或数字(\b(\w+)\b),这个单词会被捕获到编号为1的分组中,然后是1个或几个空白符(\s+),最后是分组1中捕获的内容(也就是前面匹配的那个单词)(\1)。

常用分组语法

1.捕获

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

2.零宽断言
3.负向零宽断言

贪婪与非贪婪

当正则表达式中包含能够重复的限定符时,通常的行为是在整个表达式能够满足匹配的情况下,尽可能的匹配更多的字符。如下例子所示:现有字符串 aabab 当表达式为a.b时,匹配的结果是整个字符串aabab,这就是所谓的贪婪匹配。
但有时我们需要的是匹配尽可能少的字符,这就需要用到懒惰匹配 。我们将上面的表达式修改为a.
?b时,匹配的结果就是aab和ab两个字符串

懒惰限定符##

  • *? 重复任意次,尽可能少的重复。
  • +? 重复一次或更多次,但尽可能少的重复。
  • ?? 重复一次或者零次但尽可能少的重复。
  • {n,m}? 重复n次到m次但尽可能少的重复。
  • {n,}? 重复n次以上,但尽可能少的重复。

你可能感兴趣的:(2019-07-29)