import re
s = ("title - news_source\n"
"Airbnb stock has 15% upside after an 'impressive' earning report, says BofA - Business Insider")
result = print(re.sub(r"\s-\s.*", " ", s))
输出
title
Airbnb stock has 15% upside after an 'impressive' earning report, says BofA
您可以匹配
\s-\s.*
并替换为空字符串\s
也可以匹配换行符。如果要匹配不带换行符的空白字符,还可以使用[^\S\r\n]-[^\S\r\n].*
输出
如果字符串开头至少应有一个非空白字符
\S
,则可以使用捕获组,并在替换中使用组后跟空格Regex demoPython demo
如果只想匹配
news_source
,可以执行以下操作:因此正则表达式将匹配包含以下内容的任何字符串:
但是,我想它并不总是包含下划线。 如果您只想匹配“-”后面的任何内容,但只想获得空格后面的内容,则可以创建一个捕获组:
这将匹配
-
之后的任何内容,并且捕获所有字母数字字符,如果至少有一个字母数字字符! 在您的情况下,它将与- news_source
匹配,并捕获news_source
但是,如果它是一个更复杂的字符串,例如:
Title - new source _ with : some , very weird "format"
,并且您确实希望在-
之后获取所有内容,那么您将使用:它将捕获:
new source _ with : some , very weird "format"
。 其中.
将匹配除换行符(\n
和\r
)之外的任何字符我不确定您在python中使用什么来计算正则表达式,但您应该检查如何从匹配中提取捕获组
编辑:
在你的反应之后,我现在看到你想要简单地去除源代码。那是我的错
在这种情况下:
这将捕获标题(在
-
之前的所有内容)。 我希望以上所有表达的解释足以理解这个表达的确切含义。简而言之:它捕获模式-
之前的所有内容我将把剩下的例子也留在这里,除非人们想让我把它们删除以便于澄清
相关问题 更多 >
编程相关推荐