正则表达式
(首发于 2018 年 8 月 7 日)正则表达式是由普通字符以及特殊字符(称为“元字符”)组成的文字模式,可以作为模板,用来描述在搜索文本时要匹配的一个或多个字符串。 1. 常见元字符元字符主要作用有:用来匹配字符、用来匹配位置、用来匹配数量和用来匹配模式。常见的元字符如下表所示。
2. 字符转义如果需要匹配元字符本身,我们需要用到字符转义来实现,使用 “” 来取消元字符的特殊含义。
3. 重复正则表达式中用于匹配重复的字符串,可以使用限定符描述,简化正则表达式的书写。
4. 字符集合如果需求是匹配没有预定义元字符的字符集合,例如需求是匹配 a,b,c,d,e 中任意一个字符,可以使用自定义字符集合。正则表达式支持自定义字符集合,用 [] 来实现自定义字符集合,中括号内写要匹配的自定义字符集合。对于上述需求,可以使用 [abcde] 来匹配待定字符串。 中括号内不仅可以写自定义的字符集合,还可以指定自定义字符范围,例如 [0-9] 与 “d” 是等价的,[a-z0-9A-Z_] 与 “w” 是等价的(英文情况下)。 5. 分支条件正则表达式支持多种匹配规则,满足任意一种规则都是匹配成功,这叫作分支条件,用 “|” 把不同匹配规则分隔开即可。
6. 分组对于有规律的字符串,我们可以将其分组,分组每一组,从而写出可以匹配的正则表达式。
正则表达式中使用小括号指定的表达式为一个分组,默认情况下,每一个分组自动有一个组号,从左到右,以分组的左括号为标志,第一个出现的分组组号为 1,第二个出现是分组组号为 2,以此类推。正则表达式可以利用分组号引用前面组的表达式,这叫做后向引用,简化正则表达式的书写。 对于分组,我们也可以自定义分组名,利用自定义分组名引用相应的分组。语法为:(?d+) 或 (?”group”d+),这样就把 “d+” 的组名定义为 “group” 了。如果要引用这个分组的内容,可以使用 k?来实现。常见的分组形式如下表所示。
7. 反义如果需求是匹配除了某一类字符集合之外的字符,这时候可以使用反义来实现。
8. 贪婪与懒惰正则表达式中包含能接受重复的限定符时,通常情况是匹配尽可能多的字符,这是贪婪模式。有时,需求不希望匹配尽可能多的字符,这时可以使用懒惰模式,就是尽可能少的匹配字符,使用 “?” 启用懒惰模式。
9. 处理选项
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |