python - 如果逗号不在括号之间,则用逗号分隔,同时允许字符在括号之外并在同一逗号分隔中

标签 python regex

我有这个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)']

RegEx Demo

正则表达式详细信息:

  • ,:匹配逗号
  • (?![^()]*\)):一个否定的先行断言,确保我们不匹配 (...) 中的逗号断言 0 个或多个非括号字符后面没有 )

关于python - 如果逗号不在括号之间,则用逗号分隔,同时允许字符在括号之外并在同一逗号分隔中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55114986/

相关文章:

python - 如果文件具有 CRLF 行结尾,为什么在类 unix 系统上通过 CGI/WSGI 运行的 python 脚本会失败?

java - 使用换行正则表达式仅拆分字符串整数

php - MySQL Regexp 哪里喜欢值

REGEXP_SUBSTR 帮助

python - 如何加快大字典的迭代速度

python - 比较两个单元格值并提取差异

python - BeautifulSoup get_text 不会去除所有标签和 JavaScript

python - bool 类型列作为 SQLAlchemy 中的 ClauseElement

regex - 在clojure中读取制表符分隔的文件

javascript - 如何修改字符串内部字符,Javascript正则表达式