使用正则表达式为列表python中的每个单词捕获包含单词的句子

我正在使用 python 和正则表达式来尝试获取包含一系列 pandas df 中每个单词的特定单词的推文列表中的所有句子。


我的 dfstocks_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'])))


有谁明白为什么没有匹配完整的句子?


哈士奇WWW
浏览 116回答 1
1回答

PIPIONE

如果你不必处理缩写和其他混乱的格式,你可以使用匹配这些字符串r'[^.?!]*(?:{})\b[^.?!]*[.?!]'.format("|".join(map(re.escape, stocks_df['Symbol'])))该模式看起来[^.?!]*(?:\$GSX|\$NVDA|...)\b[^.?!]*[.?!]会匹配[^.?!]*!- 除了,?和之外的0 个或更多字符.(?:\$GSX|\$NVDA)- 符号栏中的一个词\b- 需要整个单词,\b是单词边界[^.?!]*!- 除了,?和之外的0 个或更多字符.[.?!]- 一个?,!或.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python