以前可能有人问过这个问题,但是我找不到解决方案。假设我的文本是 '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/