正则表达式以匹配字母+没有匹配的左括号的闭括号

时间:2019-03-21 04:19:42

标签: python regex

我只想匹配

a),b)和c)

但是我当前的正则表达式语句也匹配所有匹配的字母+')'。

我当前的正则表达式声明:

(?<!\().*?(\w\))

句子:

  

这是(示例a)a)这是什么。 b)这是另外一回事。   c)这是另一回事。这是(示例b)a)这是什么。   b)这是另外一回事。 c)这是另一回事。

预期输出:['a)','b)','c)']

当前输出:['a)','a)','b)','c)']


我也想到了

(?<!\(\w+).*?(\w\)) 

但是这不适用于我的情况,因为我正在使用Python,而在lookbehind内部的'+'量词在Python中无效。因此,也欢迎对此有任何解决方法的任何想法。

1 个答案:

答案 0 :(得分:0)

您可以使用一种替换模式,该模式匹配一​​对匹配的括号或一个单词字符,然后匹配一个右括号,然后过滤掉空的匹配项:

list(filter(None, re.findall(r'.*?(?:\([^)]*\)|(\w\)))', s)))

所以给定:

s = 'This is (example a) a) this is something. b) this is something else. c) this is another thing.'

它将返回:

['a)', 'b)', 'c)']