【问题标题】:Regexp split string with additional conditions带有附加条件的正则表达式拆分字符串
【发布时间】:2015-07-28 21:32:22
【问题描述】:

我有类似的字符串

a = 'text1, text2 (subtext1, subtext2), text3'

需要用逗号符号分割该字符串的各个部分,但仅限于那些不在框架括号中的部分:

splited = ['text1', 'text2 (subtext1, subtext2)', 'text3']

如何用正则表达式做到这一点?

【问题讨论】:

    标签: python regex split conditional-statements


    【解决方案1】:

    使用基于正则表达式的否定前瞻断言。

    >>> a = 'text1, text2 (subtext1, subtext2), text3'
    >>> re.split(r',(?![^()]*\))', a)
    ['text1', ' text2 (subtext1, subtext2)', ' text3']
    >>> re.split(r',\s*(?![^()]*\))', a)
    ['text1', 'text2 (subtext1, subtext2)', 'text3']
    

    DEMO

    基于正则前瞻的正则表达式。

    >>> re.split(r',\s*(?=[^()]*(?:\(|$))', a)
    ['text1', 'text2 (subtext1, subtext2)', 'text3']
    

    【讨论】:

    • 用 PHP preg_split() 对此进行了测试,它的工作原理是一样的。干得好!
    • 你可以在 php 上使用 python 中使用的所有正则表达式。
    • 是的,但对于 javascript 而言并非总是如此,所以我想明确确认任何来她可能想知道的人
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-10
    • 1970-01-01
    • 2013-11-19
    • 2011-06-18
    相关资源
    最近更新 更多