【发布时间】:2020-09-20 23:35:48
【问题描述】:
我正在使用 python 和正则表达式来尝试抓取推文列表中的所有句子,其中包含一系列 pandas df 中每个单词的特定单词。
我的 df stocks_df 包含某些股票名称,例如
Symbol
0 $GSX
1 $NVDA
2 $MBRX
5 $BBBY
6 $DIS
我想要推文中包含这些字符串的所有句子。我尝试的解决方案遵循我遇到的另一个正则表达式问题:Key error when using regex quantifier python
但是我的解决方案主要是在句子的开头抓取符号,如果在句子的中间则不抓取它。它似乎也只匹配符号而没有得到句子的其余部分。我的代码是这样的:
pattern2 = r'(?:{}) (?:[^.]*[^.]*\.)'.format("|".join(map(re.escape, stocks_df['Symbol'])))
有人明白为什么不匹配完整的句子吗?
【问题讨论】:
-
不确定
[^.]*[^.]*的意图为什么要重复?给我们一些输入的例子。 -
这里没有足够的细节。如果您打算匹配没有包含“单词”的缩写的“句子”,您可以尝试使用
r'[^.?!]*(?:{})\b[^.?!]*[.?!]'而不是r'(?:{}) (?:[^.]*[^.]*\.)'。 -
@WiktorStribiżew 谢谢,我的解释可能有点糟糕,但你的模式正是我想要得到的。谢谢。