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

2024-09-28 01:33:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用python和正则表达式尝试获取tweet列表中的所有句子,这些tweet列表中包含一系列单词中的每个单词的特定单词

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

有人知道为什么完整的句子不匹配吗


Tags: 字符串df列表符号symbol单词句子tweet
1条回答
网友
1楼 · 发布于 2024-09-28 01:33:27

如果不必处理缩写和其他混乱的格式,可以使用

r'[^.?!]*(?:{})\b[^.?!]*[.?!]'.format("|".join(map(re.escape, stocks_df['Symbol'])))

模式将看起来像[^.?!]*(?:\$GSX|\$NVDA|...)\b[^.?!]*[.?!],并且将匹配

  • [^.?!]*-0个或多个字符,而不是!?.
  • (?:\$GSX|\$NVDA)-符号列中的一个单词
  • \b-需要整个单词,\b是单词边界
  • [^.?!]*-0个或多个字符,而不是!?.
  • [.?!]-a?!.

相关问题 更多 >

    热门问题