gpt4 book ai didi

python - 如何在 Python 中使用正则表达式从字符串中提取数字,除非在括号内?

转载 作者:行者123 更新时间:2023-11-28 20:42:49 25 4
gpt4 key购买 nike

这是我的测试字符串:

  • 字字字字; 123-125
  • 单词单词(1000-1000)
  • 单词单词单词(1000-1000); 99-999
  • 一个字一个字

我应该使用什么正则表达式来只提取那些不在括号内的数字(格式:\d+-\d+)(上面粗体显示的那些)?

我已经试过了:

(\d+-\d+)(?!\))

但它是匹配的:

  • 字字字字; 123-125
  • 单词单词(1000-1000)
  • 单词单词单词(1000-1000); 99-999
  • 一个字一个字

注意第二个括号前的最后一位数字。

我试图删除任何后跟括号的匹配项,但它只删除了一位数字而不是整个匹配项!我在这里缺少什么?

任何帮助将不胜感激。

最佳答案

您可以使用否定的前瞻来仅获取您需要的那些值,如下所示:

(?![^()]*\))(\d+-\d+)

(?![^()]*\)) 前瞻实际上检查连字符数字后没有右圆括号。

参见 demo

示例代码:

import re
p = re.compile(ur'(?![^()]*\))(\d+-\d+)')
test_str = u"Word word word; 123-125\nWord word (1000-1000)\nWord word word (1000-1000); 99-999\nWord word word word"
re.findall(p, test_str)

sample program 的输出:

[u'123-125', u'99-999'] 

关于python - 如何在 Python 中使用正则表达式从字符串中提取数字,除非在括号内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29917127/

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