python正则表达式在错误的位置拆分

2024-04-25 09:28:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的正则表达式和输入字符串。你知道吗

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}"]


Tags: 字符串restringpatternsplitprintcompileop
3条回答

你可以简单地用这个分开

\s+(?![^{]*\})

请参见演示。你知道吗

https://regex101.com/r/WjQVqZ/1

string = "token1 token2 {a | op (b|c) | d}"
re.findall(r'\w+|\{.*}',string)

输出:

['token1', 'token2', '{a | op (b|c) | d}']

split方法使用的原始模式是r'\s+(?=[^\}]*(?:\{|$))'。你知道吗

每次遇到空格时,您都希望向前看一个右大括号,这样就可以知道空格是否在大括号内,除非下一步看到的是左大括号或字符串的结尾。你知道吗

相关问题 更多 >