Python正则表达式匹配句子中的模式

时间:2015-10-10 03:33:12

标签: python regex

给出例如段落

。这是图3a。这是图4a。我喜欢(图5)。这很重要(图6a)。

我想要一个python正则表达式来提取基于图号的句子。我正在尝试

  1. 这是图3a使用([^。] *?fig。 3 [^。] 。)
  2. 这图4a([^。] *?图。 4 [^。] 。)
  3. 我喜欢(图5)([^。] *?fig。 5 [^。] 。)
  4. 这很重要(图6a)([^。] *?图。 6 [^。] 。)
  5. 但匹配并不具体。例如,数字4将提取所有数字。我只是一个基于图号

    的具体数字

1 个答案:

答案 0 :(得分:1)

你需要替换,

    使用.*4之前的
  • [^.]*
  • 4替换为\d

代码:

In[3]: s = "This is figure 3a. This is fig 4a . I like (figure 5). This is important (fig 6a)."
In[4]: import re
In[5]: re.findall(r'[^.]*?fig[^.]*\d[^.]*', s)
Out[5]: 
['This is figure 3a',
 ' This is fig 4a ',
 ' I like (figure 5)',
 ' This is important (fig 6a)']

In[8]: re.findall(r'\s*([^.]*?fig[^.]*\d[^.]*?)(?=\s*\.)', s)
Out[8]: 
['This is figure 3a',
 'This is fig 4a',
 'I like (figure 5)',
 'This is important (fig 6a)']