使用子表达式
什么是子表达式
子表达式,通俗的叫法是 “分组”。把一个完整的正则表达式分解为一系列的小的表达式,这些小的表达式就是子表达式。
子表达式的语法
子表达式必须使用圆括号 () 括起来。
子表达式中可以使用竖线 | 表示逻辑或的操作。
可以将子表达式认为是一个拥有多个元素的特殊“字符”,支持重复匹配。
子表达式支持嵌套,允许多重嵌套。
子表达式示例
正则表达式 | 文本 | 匹配结果 | 解释 |
---|---|---|---|
(你|我) | 你和我,心连心 | 你我 | 匹配“你”或者“我” |
(洗刷刷){1,} | 来一首洗刷刷洗刷刷 | 洗刷刷洗刷刷 | 匹配“洗刷刷”至少一次 |
((滚开),){2}(滚开) | 重要的事情说三遍:”滚开,滚开,滚开” | 滚开,滚开,滚开 | (滚开),){2}匹配“滚开,”2次,(滚开)匹配剩下的1次“滚开” |
回溯引用
定义
回溯引用,指在正则表达式中,后面的匹配模式引用前面定义的子表达式。
可以将其理解为编程语言中的变量:前面的子表达式对应于定义变量,后面的回溯引用对应于引用变量。
也就是说,前面的子表达式匹配到什么,后面的回溯引用就匹配什么。
一个正则表达式可以被多次引用。
语法
使用反斜线 \ 与子表达式的编号组成。
例如,以下正则表达式匹配所有的HTML标题:
<[Hh]([1-6])>.*?</[Hh]\1>
回溯引用既可以用用在搜索操作中,也可以用在替换操作中。
替换操作需要2个正则表达式:一个用来进行搜索,称为搜索模式;一个被用于替换搜索到的文本,称为替换模式。
回溯引用可以在替换模式中引用搜索模式中的子表达式。
一般使用美元符号 $ 和子表达式编号组成。
例如,以下正则表达式将邮件地址替换为可点击的链接:
搜索模式:
(\w+[\w\.]*@[\w\.]+\.\w+)
替换模式:
<a href="mailto:$1">$1</a>