python - 编写正则表达式以获取特定字符后的所有单词
问题描述
我有一个文件,其中所有行的格式都是title - news_source
. 我想将标题后的所有字符替换为
(空格)。
到目前为止,我只有模式,\s-\s
但不知道为news_source写什么模式。
有人可以指导我完成为news_source编写正则表达式的过程吗?谢谢!
解决方案
如果只想匹配news_source
,可以执行以下操作:
\w+_\w+
- \w:将匹配任何字母数字字符
- _ : 将匹配下划线 (_)
- +:将确保必须至少有一个这样的字符。
因此,正则表达式将匹配任何包含以下内容的字符串:
至少一个字母数字字符,后跟一个下划线,然后是至少一个字母数字字符。
但是,我想它并不总是包含下划线。如果您只想匹配“-”后面的任何内容,但只想获取空格后面的内容,则可以创建一个捕获组:
\-\s(w+)
如果至少有一个字母数字字符,这将匹配 , 之后的任何内容-
并捕获所有字母数字字符!在您的情况下,它将与, 和 capture匹配。- news_source
news_source
但是,如果它是一个更复杂的字符串,例如:Title - new source _ with : some , very weird "format"
并且您真的想得到 之后的所有内容-
,那么您将使用:
\-\s(.+)
这将捕获:new source _ with : some , very weird "format"
. 将.
匹配任何字符,除了换行符(\n
和\r
)。
我不确定您在 python 中使用什么来评估正则表达式,但您应该检查如何从匹配中提取捕获组。
编辑:
在你的反应之后,我现在看到你想简单地摆脱源头。那是我的错!
在这种情况下:
(.+)\s-
这将捕获标题(之前的所有内容 -
)。我希望对以上所有表达式的解释足以理解这个表达式到底是做什么的。简而言之:它捕获了 pattern 之前的所有内容 -
。
除非人们为了清楚起见希望我删除它们,否则我也会将其余示例留在此处。
推荐阅读
- sql - Postgres:当只有一些行是有效的正则表达式时,选择使用列作为正则表达式
- python - 有几个条件的分组
- java - Azure 中的 Spring Cloud Function 在触发时抛出 IllegalStateException
- javascript - 如何更新第三方道具价值 - Reactjs?
- discord.js - 在 discord.js 中制作欢迎信息
- javascript - 将 useMemo 或 useCallbacks 添加到地图组件会破坏代码并显示错误“渲染的钩子比上一次渲染期间更多”
- javascript - 我的
不加载我的 js 文件并且我的浏览器无法加载它 - javascript - 在 JSON.stringify(obj) 之后反应 js 不同的值
- elasticsearch - Elasticsearch 操作现有字段值以添加新字段
- node.js - 重新连接到 EventStore 中的持久连接后不重复确认的事件