我有以下正则表达式和输入字符串。
pattern = re.compile(r'\s+(?=[^()|^{}|^<>]*(?:\(|\{|\<|$))')
string = "token1 token2 {a | op (b|c) | d}"
print pattern.split(string)
结果是:["token1","token2","{a | op","(b|c) |d}"]
我希望正则表达式给出以下结果:["token1","token2","{a | op (b|c) | d}"]
答案 0 :(得分:3)
答案 1 :(得分:3)
string = "token1 token2 {a | op (b|c) | d}"
re.findall(r'\w+|\{.*}',string)
输出:
['token1', 'token2', '{a | op (b|c) | d}']
答案 2 :(得分:0)
与拆分方法一起使用的原始模式是r'\s+(?=[^\}]*(?:\{|$))'
。
每次遇到空白时,你都希望向前看一个结束的大括号,所以你知道白色空间是否在大括号内 - 除非接下来看到一个开口大括号或字符串的末尾。