python正则表达式百分号
我想从文本中提取包含“~~~~~~~~~~~销售的~~帐户(ed或s)”的所有部分。我正在使用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
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})