python:如何使用正则表达式在比赛前后提取单词

时间:2019-03-20 07:36:10

标签: regex python-3.x

将以下数据视为样本

  

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.

实际输出:什么都没有捕获

有人可以指出正则表达式的问题吗?

1 个答案:

答案 0 :(得分:3)

您可以使用此正则表达式:

r'(?:^|\S+\s+\S+)\n(?:\s*\S+\s+\S+|$)'

RegEx Demo

代码:

>>> 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个单词或行尾