括号之间的Python正则表达式替换[重复]
Posted
技术标签:
【中文标题】括号之间的Python正则表达式替换[重复]【英文标题】:Python regex substitute between parenthesis [duplicate] 【发布时间】:2018-09-26 16:24:25 【问题描述】:我需要从文本文件中逐行读取,基本上可以用空字符串删除包括第一个左括号之后的所有内容。 我想出了一个正则表达式:
>>> line = "Bar Harbor (College of the Atlantic)"
>>> re.sub(r"(.*) ?\(.*$","\1", line)
'\x01'
以下有效,但不包括不符合规范的不带括号的行(因此它不起作用)
match = re.match("(.*?) ?\(.*$",line)
if match:
towns.append(match.group(1))
我在第一个替代品中做错了什么?正则表达式不是必需的,我只需要删除第一个括号后的所有内容,如果有多个我也感兴趣的方法。
【问题讨论】:
如果first之后的所有(
都应该被删除,使用re.sub(r"\(.*","", line)
,为什么要添加(.*) ?
?
或者如果你要匹配,请执行(?m)^[^(]+
谢谢@WiktorStribiżew 我希望是因为我在电脑后面花了太多时间,也许我该睡觉了。
我觉得接近How to remove all characters after a specific character in python?
【参考方案1】:
这是一种不用正则表达式的方法:
In [1]: x = "Bar Harbor (College of the Atlantic)"
In [6]: idx = x.find('(')
In [7]: x[:idx] if idx > 0 else x
Out[7]: 'Bar Harbor '
【讨论】:
这个has already been posted。 @WiktorStribiżew 不知道这是一个骗子,请随意关闭为重复。以上是关于括号之间的Python正则表达式替换[重复]的主要内容,如果未能解决你的问题,请参考以下文章