将以下数据视为样本
input_corpus =“这是一个示例。\ n我正在尝试提取它。\ n”
我正在尝试使用以下代码准确提取。\ n前后的2个单词
for m in re.finditer('(?:\S+\s+){2,}[\.][\n]\s*(?:\S+\b\s*){0,2}',input_corpus):
print(m)
预期输出:
an example. I am
extract it.
实际输出:什么都没有捕获
有人可以指出正则表达式的问题吗?
答案 0 :(得分:3)
您可以使用此正则表达式:
r'(?:^|\S+\s+\S+)\n(?:\s*\S+\s+\S+|$)'
代码:
>>> input_corpus = "this is an example.\n I am trying to extract it.\n"
>>> print re.findall(r'(?:^|\S+\s+\S+)\n(?:\s*\S+\s+\S+|$)', input_corpus)
['an example.\n I am', 'extract it.\n']
详细信息:
(?:^|\S+\s+\S+)
:匹配前2个字或行首\n
:匹配新行(?:\s*\S+\s+\S+|$)
:匹配接下来的2个单词或行尾