我只想匹配
a),b)和c)
但是我当前的正则表达式语句也匹配所有匹配的字母+')'。
我当前的正则表达式声明:
(?<!\().*?(\w\))
句子:
这是(示例a)a)这是什么。 b)这是另外一回事。 c)这是另一回事。这是(示例b)a)这是什么。 b)这是另外一回事。 c)这是另一回事。
预期输出:['a)','b)','c)']
当前输出:['a)','a)','b)','c)']
我也想到了
(?<!\(\w+).*?(\w\))
但是这不适用于我的情况,因为我正在使用Python,而在lookbehind内部的'+'量词在Python中无效。因此,也欢迎对此有任何解决方法的任何想法。
答案 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)']