括号之间的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正则表达式替换[重复]的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式提取方括号之间的文本[重复]

Python - 正则表达式将数据框中的一列拆分为 2 [重复]

python正则表达式中的匹配括号[重复]

怎么用正则表达式匹配小括号里内容(含括号)?

pycharm中使用正则表达式批量添加print括号

Notepad ++中括号中的正则表达式[重复]