正则表达式中的退格符转义¶
ID: py/regex/backspace-escape
Kind: problem
Security severity:
Severity: recommendation
Precision: very-high
Tags:
- maintainability
Query suites:
- python-security-and-quality.qls
正则表达式中 \b
转义序列的含义取决于其语法上下文:在字符类内部,它匹配退格字符;在字符类外部,它匹配单词边界。这种上下文依赖性使得正则表达式难以阅读,因此不应在字符类内部使用 \b
转义序列。
建议¶
将字符类中的 \b
替换为语义上等效的转义序列 \x08
。
示例¶
在以下示例中,正则表达式包含两个 \b
的使用:在第一个情况下,它匹配单词边界,在第二个情况下,它匹配退格字符。
import re
matcher = re.compile(r"\b[\t\b]")
def match_data(data):
return bool(matcher.match(data))
您可以将正则表达式重写为 r"\b[\t\x08]"
,使其更容易被其他开发人员理解。
参考¶
Python 标准库:正则表达式操作。