首页 > 解决方案 > 编写正则表达式以获取特定字符后的所有单词

问题描述

我有一个文件,其中所有行的格式都是title - news_source. 我想将标题后的所有字符替换为 (空格)。

到目前为止,我只有模式,\s-\s但不知道为news_source写什么模式。

有人可以指导我完成为news_source编写正则表达式的过程吗?谢谢!

标签: pythonregex

解决方案


如果只想匹配news_source,可以执行以下操作:

\w+_\w+
  • \w:将匹配任何字母数字字符
  • _ : 将匹配下划线 (_)
  • +:将确保必须至少有一个这样的字符。

因此,正则表达式将匹配任何包含以下内容的字符串:

至少一个字母数字字符,后跟一个下划线,然后是至少一个字母数字字符。

但是,我想它并不总是包含下划线。如果您只想匹配“-”后面的任何内容,但只想获取空格后面的内容,则可以创建一个捕获组

\-\s(w+)

如果至少有一个字母数字字符,这将匹配 , 之后的任何内容- 捕获所有字母数字字符!在您的情况下,它将与, 和 capture匹配。- news_sourcenews_source

但是,如果它是一个更复杂的字符串,例如:Title - new source _ with : some , very weird "format"并且您真的想得到 之后的所有内容- ,那么您将使用:

\-\s(.+)

这将捕获:new source _ with : some , very weird "format". 将.匹配任何字符,除了换行符(\n\r)。

我不确定您在 python 中使用什么来评估正则表达式,但您应该检查如何从匹配中提取捕获组。

编辑:

在你的反应之后,我现在看到你想简单地摆脱源头。那是我的错!

在这种情况下:

(.+)\s-

这将捕获标题(之前的所有内容 -)。我希望对以上所有表达式的解释足以理解这个表达式到底是做什么的。简而言之:它捕获了 pattern 之前的所有内容 -

除非人们为了清楚起见希望我删除它们,否则我也会将其余示例留在此处。


推荐阅读