正则表达式

正则表达式

正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。

实践出真知:在线正则表达式

元字符

元字符 说明
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线
\s 匹配任意的空白符
\d 匹配数字
\b 匹配单词开始或者结尾
^ 匹配行首
$ 匹配行尾

特殊字符

特殊字符 描述
( ) 匹配一个子表达式并记忆,可以供后面使用
[ ] 匹配单个字符
{ } 重复模式
| 分支匹配,通常配合()使用

反义

语法 说明
\W 匹配任意单个不是字母,S数字,下划线的字符
\S 匹配任意单个不是空白符的字符
\D 匹配任意单个非数字的字符
\B 匹配不是单词开头和结束的位置
[^x] 匹配单个除了x以外的任意字符
[^one] 匹配单个除了one这几个字母的任意字符

重复模式{}

  • 默认贪婪模式
  • 懒惰模式(重复后加?)
语法 说明(和之前紧邻元素组合起来表示之前紧邻元素出现次数)
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次

反向引用()

  • 用括号括起来的内容可以被记忆,可以使用序列\1\2来匹配前面括号匹配中的字符串,数字取决于是第几个括号
  • 分组命名(?exp)
  • 非捕获型括号
    • (?:)不会记忆该括号中的内容,效率更高

环视功能

  1. 环视功能不匹配任何字符,只匹配文本中的特定位置,这一点与单词分界符「\b」、锚点「^」和「$」相似。但是,环视比它们更加通用。
  2. 环视不会占用字符
  3. 顺序环视和逆序环视前后顺序是无关紧要的
类型 正则表达式 匹配成功的条件
肯定顺序环视 (?=...) 子表达式可以匹配右侧文本
肯定逆序环视 (?<=...) 子表达式可以匹配左侧文本
否定顺序环视 (?!...) 子表达式不可以匹配右侧文本
否定逆序环视 (? 子表达式不可以匹配左侧文本

元字符优先级

运算符 描述
\ 转义符
(), (?:), (?=), [] 圆括号和方括号
*, +, ?, {n}, {n,}, {n,m} 重复模式
^, $, \任何元字符、任何字符 元字符和普通字符
|

转载于:https://www.cnblogs.com/redo19990701/p/11592651.html

你可能感兴趣的:(正则表达式)