python-3.x - 如何从字符串中提取准确的单词,同时减少误报发现
问题描述
我想从字符串中提取确切的单词。我的代码通过将搜索项视为子字符串来导致错误发现。这是代码:
import re
text="Hello I am not react-dom"
item_search=['react', 'react-dom']
Found_item=[]
for i in range(0, len(item_search)):
Q=re.findall(r'\b%s\b'%item_search[i], text, flags=re.IGNORECASE | re.MULTILINE | re.UNICODE)
Found_item.append(Q)
print(Found_item)
输出是:[['react'], ['react-dom']]
。所以,在结果中,我不想看到react
as 项目。
预期的输出是:[[''], ['react-dom']]
解决方案
\b
用于表示类型之间的边界。例如在单词和标点符号等之间,所以\b
会出现在t
from react 和-
. 因此,由于我们需要整个单词,因此我们只需使用后向和前瞻来确保两者之间没有非空格(这与说两者之间有空格不同)。因此你可以使用:
re.findall(rf"(?<!\S)({'|'.join(item_search)})(?!\S)", text)
['react-dom']
编辑:如果您要在句子中包含其他非单词内容,例如句点,请检查@DYZ 评论,然后您可以使用:
(?<!\S)({'|'.join(item_search)})\W*(?!\S)
推荐阅读
- python - 来自python的ElementTree找不到子标签
- android - RecyclerView 不显示列表
- xamarin - 当 isUsingNativeUI 为 true 时,xamarin.auth 卡在成功
- reactjs - 使用“create-react-app my-app”创建反应应用程序时出错
- python - 如何替换包含列表字典中给出的子字符串的数据框中的字段并避免ValueError?
- liquibase - 当 changelog 包含 includeAll 而不是包含一个 xml 时的 Liquibase 执行顺序
- php - 有没有办法在“Vanilla”PHP 中创建异步代码?
- javascript - 从下拉可用选项中删除选定的选项
- python - 如何在计算共振峰频率特征时确定线性预测系数 (LPC) 中的滤波器阶数?
- python - Python 字符串为 null 但也不是 None 也不是空字符串