python - 转义 Python 中的所有元字符

标签 python regex metacharacters

我需要搜索可能具有许多元字符的模式。目前我使用长正则表达式。

prodObjMatcher=re.compile(r"""^(?P<nodeName>[\w\/\:\[\]\<\>\@\$]+)""", re.S|re.M|re.I|re.X)

(我的实际模式很长,所以我只是粘贴了一些我需要帮助的相关部分)

当我需要在一次重新编译中编写此类模式的组合时,这尤其痛苦。

有没有一种Python式的方法来缩短模式长度?

最佳答案

看,你的模式可以简化为

r"""^(?P<nodeName>[]\w/:[<>@$]+).*?"""

请注意,您不必转义字符类中的任何非单词字符,速记类除外,^-]\。有一些方法可以使这些字符(\ 除外)在字符类中保持不转义:

  • ] 位于字符类的开头
  • - 位于字符类的开头/结尾
  • ^ - 仅当将其作为文字符号放置在字符类的开头时才应进行转义。

在字符类之外,必须转义 \[(, ) +$^*?. .

请注意,/ 不是 Python 正则表达式模式中的特殊正则表达式元字符,并且不必转义。

在定义正则表达式模式时使用原始字符串文字以避免出现问题(例如混淆单词边界 r'\b' 和退格 '\b')。

关于python - 转义 Python 中的所有元字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38897045/

相关文章:

python - 在Python中读取文件后尝试创建x和y值的数组

python - 从字符串中删除前x个字符?

python - 如何在列表理解中将变量名称提取为字符串?

python - 如何使用来自多列的值对 Pandas 数据框进行排序?

unix - grep ^- 在 UNIX 中是什么意思?

ruby - 如何为字母、元音和辅音等德语字符类编写正则表达式?

ruby-on-rails - 将基于时间的字符串转换为 ISO 格式

javascript - 在 JavaScript 中使用 RegEx 解析 CSS 字符串

Javascript 匹配分隔符之间的所有内容,包括换行符