python - 如何在一行中搜索带有特殊符号的字符串

标签 python regex

我有一个包含数千个实体名称的“entity_set”,例如:

["CQ", "Pi", "+1", "M"]

有些行包含其中一个实体,例如,

line1 = "What is M ?"

line2 = "Who writes +1 ?"

我正在使用 re.search() 来匹配它,但是当它与“+1”匹配时出现错误:

sre_constants.error: nothing to repeat at position 0

原因是“+1”包含特殊符号“+”。

这是我的代码:

for line in lines:
   for entity in entity_set:
       if re.search(r'{0}\s'.format(entity), line):
            STATEMENTS

如何修复我的代码?任何帮助将不胜感激。

最佳答案

任何时候你在正则表达式中使用文字文本(即不应被正则表达式引擎解释的文本),首先通过 re.escape 传递它:

re.search(r'{0}\s'.format(re.escape(entity)), line)

关于python - 如何在一行中搜索带有特殊符号的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57404786/

相关文章:

python - 如何在python中使用谷歌语音识别api?

php - 使用正则表达式检查变量

python - 将外键更改为另一个模型

python - multiplechoicefield - 如何更新每个页面加载的选项列表

python - 将 C 中的包含文件转换为 python

regex - 使用 sed 搜索精确模式并换行打印

regex - 如何通过正则表达式识别 "text"单词?

java - .replaceAll() 方法无法正常工作

python - 如何让 google app engine 支持 django 的 ImageField?

python - 将 @commit_on_success 嵌套在 @commit_manually 中