python - 如何查找与正则表达式匹配的所有单词?

标签 python regex

以前可能有人问过这个问题,但是我找不到解决方案。假设我的文本是 'C:\\Windows\\system32\\cmd.exe/v/c hello cmd.exe' 并且我想查找并删除具有正则表达式 的所有单词r'cmd.exe'。结果必须是:'/v/c hello'

这就是我尝试过的:首先,我尝试找到单词边界的索引,以便可以删除它们。但是,我得到的索引是针对精确的正则表达式...而不是针对整个匹配单词。

In [41]: [(m.start(0), m.end(0)) for m in re.finditer(r'\b\w*cmd.exe\w*\b', cmd)]
Out[41]: [(20, 27), (40, 47)]

In [42]: [(m.start(0), m.end(0)) for m in re.finditer(r'cmd.exe', cmd)]
Out[42]: [(20, 27), (40, 47)]

In [44]: result = re.findall(r'cmd.exe', cmd, re.I)

In [45]: result
Out[45]: ['cmd.exe', 'cmd.exe']. <-- I wanted ['C:\\Windows\\system32\\cmd.exe', 'cmd.exe']

In [48]: result = re.findall(r'cmd.exe|\bcmd.exe\b', cmd, re.I)

In [49]: result
Out[49]: ['cmd.exe', 'cmd.exe']

简而言之,如何获取包含子字符串/正则表达式的整个单词?

最佳答案

并不是说正则表达式不好*,但为什么不简单地说:

txt = 'C:\\Windows\\system32\\cmd.exe /v /c hello cmd.exe'
outcome = ' '.join([part for part in txt.split(' ') if not 'cmd.exe' in part])

给出:

'/v /c hello'

*有些人在遇到问题时会想“我知道,我会使用正则表达式”。现在他们有两个问题。

关于python - 如何查找与正则表达式匹配的所有单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55011391/

相关文章:

python - 为什么django无法正确提供我的SPA静态文件?

结束行前有多行的正则表达式

Java + regex 如何检查这样的字符串 "LOAD_filesourceB-01012008_000058.dat"的类型和数字(最后 6 位数字)

python - 如何在Python中将从PDF(使用textract)提取的文本写入docx文件

javascript - 当我使用小写字母时,为什么正则表达式会失败?

python - 正则表达式组恰好匹配 n 次

python - 为什么 torch.nn.Sigmoid 是一个类而不是一个方法?

python - 如何根据任意标准对齐两个列表?

python - 使用 split (' ' 拆分命令行是否有问题?

python - 为什么这个正则表达式在 python 中不起作用?它是有效的并且在 RegExr 上运行良好