gpt4 book ai didi

python - 正则表达式匹配太多括号

转载 作者:行者123 更新时间:2023-11-30 23:17:56 29 4
gpt4 key购买 nike

我正在 python 中使用正则表达式从文本文件中提取数据元素。我遇到了抓取过多括号的问题。

文本存储在名为 temp 的字符串中,格式如下:

temp='Somethingorother School District (additional text)|other stuff here'

我目前正在使用

match = re.search(r'(.* School District) (\(.*\))\|?',temp)

效果很好并且很匹配

match.group(1) = Somethingorother School District
match.group(2) = (additional text)

但是,有时“此处的其他内容”部分也包含括号,如下所示:

'Somethingorother School District (additional text)|$59900000 (4.7 mills)'

所以我明白了

match.group(2) = (additional text)|$59900000 (4.7 mills)

我知道这是因为 * 运算符是贪婪的,但是(附加文本)部分相当特殊,我想捕获括号中的所有内容。换句话说,我希望它在括号内贪婪,但一旦匹配 ) 就停止查找。有办法做到这一点吗?

最佳答案

使用 negated character class .

>>> match = re.search(r'(.* School District) (\([^()]*\))\|?',temp)
>>> match.group(1)
'Somethingorother School District'
>>> match.group(2)
'(additional text)'

[^()]* 匹配任何字符,但不匹配 () 零次或多次。

DEMO

关于python - 正则表达式匹配太多括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27064341/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com