【发布时间】:2010-01-08 04:31:27
【问题描述】:
我一直在查看 re 文档和其他问题,但我一直在使用正则表达式时遇到问题。
我需要从字符串中删除 [tag] 中的内容。
string = "Article Name [Tag Name]"
#and I want to go to
string = "Article Name"
如果有人能提供帮助,我将不胜感激。
【问题讨论】:
我一直在查看 re 文档和其他问题,但我一直在使用正则表达式时遇到问题。
我需要从字符串中删除 [tag] 中的内容。
string = "Article Name [Tag Name]"
#and I want to go to
string = "Article Name"
如果有人能提供帮助,我将不胜感激。
【问题讨论】:
re.sub("\s*\[.*?\]", "", string)
【讨论】:
这不使用正则表达式,所以如果这是一个要求,这不是一个答案,但你可以这样做:
string = string.split('[')[0].strip()
【讨论】:
如果您确定 [标签名称] 总是在文章名称之后,您可以不使用正则表达式。
>>> string="Article Name [Tag Name]"
>>> string[:string.find(" [")]
'Article Name'
或使用 .partition
>>> string.partition(" [")[0]
'Article Name'
【讨论】:
re.sub(r"(.*) \[.*\]", r"\1", string)
这只会删除位于字符串末尾的标签。
【讨论】:
没有正则表达式会更好:
txt = "Article Name [Tag Name]"
if txt.rfind('[') and txt.rfind(']') > txt.rfind('['): txt = txt[:txt.rfind('[')]
if txt[-1] == ' ': txt = txt[:-1]
【讨论】:
这是 [] 标签的多个实例的一个
>>> string = "Article Name [Tag Name] blah blah [tag name2] blah blah [tag name3]"
>>> for i in string.split("]"):
... print i[ : i.find("[") ]
...
Article Name
blah blah
blah blah
【讨论】: