CodeQL 文档

正则表达式中的退格符转义

ID: py/regex/backspace-escape
Kind: problem
Security severity: 
Severity: recommendation
Precision: very-high
Tags:
   - maintainability
Query suites:
   - python-security-and-quality.qls

点击查看 CodeQL 代码库中的查询

正则表达式中 \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]",使其更容易被其他开发人员理解。

参考

  • ©GitHub, Inc.
  • 条款
  • 隐私