前言
正则表达式 (Regular Expression) 是一种强大的文本模式描述语言,可以通过简洁的符号组合描述复杂的字符串匹配规则。被广泛应用于数据验证、文本提取、日志分析等领域,在我们日常工作中发挥着重要的作用。
软件行业从业,是否掌握正则表达式的使用,往往是区分菜鸟和老手的重要标识。 本文我们结合一些具体案例,详细梳理下正则表达式的应用,早日告别新手村!
正则表达式核心语法
学习正则表达式, 这里推荐一个非常直观的线上验证平台, https://regex101.com , 对于我们练习和掌握正则语法非常有帮助。
普通字符和特殊字符
正则表达式作为一个匹配规则。当然首先可以匹配各种普通字符。主要指各种中英文单词、字母、数字。此外正则表达式还会预留很多特殊字符,如 * ? + . () [] $ ^ \ |
等,代表一些特别的匹配规则,而如果这些特殊字符我们需要看作普通字符进行匹配时,则需要使用 \
符号进行转义,因此 \
也称转义符。比如 \?
就会匹配目标文本中的 ?
字符, \\
则会匹配目标文本中的 \
字符
量词符(quantifiers)
量词符是用于控制匹配次数的符号:
*
零次或多次(如a*
可匹配 “”, “a”, “aa”)+
一次或多次(a+
必须至少有一个a)?
零次或一次(a?
可匹配 “” 或 a){n}
精确匹配n次({4}
匹配4次){m,n}
匹配m到n次(含边界){m,}
匹配m到多次{,n}
匹配零次到n次
另外,在正则表达式中,还有两种匹配模式
- 贪婪模式:这是默认模式,也就会在目标文本中,尽可能最长地去匹配符合规则的字符
- 惰性模式:而如果在量词后加
?
则标记以惰性模式进行匹配,也就是尽可能少地去匹配符合规则的字符
举例来说:
浮云长长长长长长长消
这个上联中有 7 个 长
字,正则表达式 长{2,3}
默认按贪婪模式匹配,会匹配到 2 次 长长长
, 而加上 长{2,3}?
则会按尽量少的字符匹配,匹配到 3 次 长长
元字符(Metacharacters)
除量词符外,还有一类元字符,被预留构成正则表达式的基础特殊符号:
\d
匹配数字(等价于[0-9]
)\D