首页 > 解决方案 > 如果具有相似的模式,Python 正则表达式会捕获该组

问题描述

我有一个包含推文的数据集,但格式如下:

@ xxx _ yyy having trouble finding regex for this case #regex # python @stackoverflow # I _ got _ this

现在,如果您看到数据不是理想的形式,主题标签和推特 ID 的格式正确。现在,出于情感分析的目的,我需要从数据中删除这些标签和 ID。

现在,这是我正在使用的正则表达式:

[@|#]\s*\S+\s*_\s*\S+|[@|#]\s*\S+

现在,这不是完美的,但它解决了大部分问题。它匹配@ xxx _ yyy#regex# python@stackoverflow# I _ got。但是这里的一个问题是,它不是捕获整个#I_got_this,而是只捕获#I_got。这就是我坚持的地方。

欲了解更多信息:pythex

我正在寻找一个匹配字符串的正则表达式,无论字符串中有多少个 Undescores ( _ )。它应该匹配到最后一个下划线之后的字符串。

我希望我在问题陈述中非常清楚。请在这里指导我。

标签: pythonregex

解决方案


您可以使用

[@#]\s*\S+(?:\s*_\s*\S+)*

或者,更精确一点,因为\S也匹配_

[@#]\s*[^_\s]+(?:\s*_\s*[^_\s]+)*

请参阅正则表达式演示正则表达式演示 #2

细节

  • [@#]-#@字符
  • \s*- 0 个或多个空格
  • [^_\s]+ - 1 个或多个除空格以外的字符和_
  • (?:\s*_\s*[^_\s]+)*- 0个或多个序列
    • \s*_\s*-_包含 0 个或多个空格的
    • [^_\s]+ - 1 个或多个除空格以外的字符和_

推荐阅读