如何使用raw string literal编写包含引号列表的正则表达式?
正则表达式与Raw String Literal的结合实践
Raw String Literal的核心价值是减少正则表达式中反斜杠的重复转义,正则表达式的作用则是精准匹配目标子串,这也是两者搭配使用的核心原因。下面是匹配包含双引号、单引号、反引号列表的特定格式正则表达式实现:
代码实现
# 普通字符串写法:需多次转义反斜杠 rexp = '\\$\\{[\\\\\\w]+\\(.*\\)\\[["\'`]\\]\\}' print(rexp, len(rexp)) # Raw String写法:转义逻辑更简洁直观 rexp1 = r'\$\{[\\\w]+\(.*\)\[["\'`]\]\}' print(rexp1, len(rexp1))
运行输出
\$\{[\\\w]+\(.*\)\[["'`]\]\} 28 \$\{[\\\w]+\(.*\)\[["\'`]\]\} 29
差异说明
- 普通字符串模式下,每一个正则需要的反斜杠都要额外转义一次,最终输出的字符串长度更短(内部实际有效反斜杠数量被转义逻辑压缩)
- Raw String模式下,无需对正则中的反斜杠做额外转义,写法更贴近原始正则表达式,字符串长度直接对应正则的实际字符数量
内容的提问来源于stack exchange,提问作者Alexander
相关产品推荐
相关产品推荐

