我有以下代码可以从存在某个单词的文本中返回一行
with open('/Users/Statistical_NLP/Project/text.txt') as f:
haystack = f.read()
with open('/Users/Statistical_NLP/Project/test.txt') as f:
for line in f:
needle = line.strip()
pattern = '^.*{}.*$'.format(re.escape(needle))
for match in re.finditer(pattern, haystack, re.MULTILINE):
print match.group(0)
如何搜索单词并且不返回整行,只返回后面的3个单词和此单词前面的三个单词。
我的代码中必须更改此行中的内容:
pattern = '^.*{}.*$'.format(re.escape(needle))
非常感谢
答案 0 :(得分:1)
以下正则表达式将帮助您实现您想要的目标。
((?:\w+\s+){3}YOUR_WORD_HERE(?:\s+\w+){3})
为了更好地理解正则表达式,我建议您转到下一页并进行实验。
https://regex101.com/r/eS8zW5/3
这将匹配之前的三个单词,匹配的单词和之后的三个单词。
如果它们存在,以下将匹配3个单词
((?:\w+\s+){0,3}YOUR_WORD_HERE(?:\s+\w+){0,3})