python正则表达式百分号

python正则表达式百分号,python,regex,Python,Regex,我想从文本中提取包含“~~~~~~~~~~~销售的~~帐户(ed或s)”的所有部分。我正在使用python 比如说, sentence = "Henry Schenin inc, accounted for approximately 11% of our net sale" 我的正则表达式是 rx1 = re.compile('(.|\W){1,100}account(.|\W){1,100}for\W(.|\W){1,200}sale(.|\W){1,200}', re.I) 但是, r

我想从文本中提取包含“~~~~~~~~~~~销售的~~帐户(ed或s)”的所有部分。我正在使用python

比如说,

sentence = "Henry Schenin inc, accounted for approximately 11% of our net sale"
我的正则表达式是

rx1 = re.compile('(.|\W){1,100}account(.|\W){1,100}for\W(.|\W){1,200}sale(.|\W){1,200}', re.I)
但是,

rx1.search(sentence)
仅返回
None

如果我使用正则表达式,比如

rx2 = re.compile('(.|\W){1,100}account(.|\W){1,100}for\W(.|\W){1,200}', re.I)
我有

<_sre.SRE_Match object; span=(0, 67), match='Henry Schenin inc, accounted for approximately 11>

这将适用于您当前的示例。

您需要某种方法来决定匹配从何处开始,在本例中,我习惯于
(.|\W){1100}
是个坏主意,因为
可以匹配
\W
匹配的内容。您必须使用
re.S
re.DOTALL
并只使用
为什么不只使用
r'^(.*)\S*,\S*accounted\S+for\b'
然后使用
re.search(模式、句子)
?请确认您需要从
的开始到第一次出现提取字符串的一部分,因为我的文本不够清晰,我更喜欢使用re.I(在提取这些句子后,我必须由Stanfordtager进行NNP检测。因此,我不想使我的文本小写)有什么方法可以同时使用re.I和re.S?而且,我的文本比那个例句要长,所以我想在“accounted ~~~~”之前提取公司名称,可以是一个或多个。此外,正则表达式末尾的“sale”一词很重要,因为如果一个句子结尾没有“sale”一词,它可能不是我想要的。是的,使用两个修饰符就像
re.I | re.S
一样简单。您期望的输出是什么?同一个句子?@MichailN是的,对,我想从我的文本中提取相同的句子,这篇文章由数千个其他句子组成。。。!谢谢
\s+to\s+(.*?account.*? for .*?sale(s){0,1})