我有这个Python脚本。这使用了一些正则表达式。 我想分割字符串 s,但用逗号分割,同时忽略括号内存在的任何逗号。
s = """aa,bb,(cc,dd),m(ee,ff)"""
splits = re.split(r'\s*(\([^)]*\)|[^,]+)', s, re.M|re.S)
print('\n'.join(splits))
Actual output:
aa
,
bb
,
(cc,dd)
,
m(ee
,
ff)
Desired output:
aa
bb
(cc,dd)
m(ee,ff)
所以我无法让它处理括号外的文本。 希望有人能帮助我。
最佳答案
您可以使用此正则表达式进行分割前瞻:
>>> s = """aa,bb,(cc,dd),m(ee,ff)"""
>>> print ( re.split(r',(?![^()]*\))', s) )
['aa', 'bb', '(cc,dd)', 'm(ee,ff)']
正则表达式详细信息:
,
:匹配逗号(?![^()]*\))
:一个否定的先行断言,确保我们不匹配(...)
中的逗号断言 0 个或多个非括号字符后面没有)
。
关于python - 如果逗号不在括号之间,则用逗号分隔,同时允许字符在括号之外并在同一逗号分隔中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55114986/