【问题标题】:Regex to get everything except strings between parenthesis正则表达式获取除括号之间的字符串之外的所有内容
【发布时间】:2019-06-20 09:36:19
【问题描述】:

从这个字符串:

asdfhjlfbvj(1dszfkl)asdfjklugnnbcvklbc(2adfsfhj)fklajsdflkjasdf(3asdf)bvcxv

有了这个:

\\(.*?\\)

你得到 (1dszfkl)、(2adfsfhj) 和 (3asdf)

如何获取asdfhjlfbvj、asdfjklugnnbcvklbc、fklajsdflkjasdf和bvcxv?

谢谢!!

【问题讨论】:

    标签: regex string


    【解决方案1】:

    匹配非括号字符,预读( 或字符串结尾:

    [^()]+(?=\(|$)
    

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

    或者,如果你可以使用\K,为了更高效,匹配括号和其中包含的内容,然后使用\K 忘记:

    (?:\([^)]+\)\K)?[^(]+
    

    https://regex101.com/r/1XOjjA/2

    【讨论】:

    • 我不知道第二个,在网站上工作,在python中不起作用(甚至转义字符): (?:\([^)]+\)\K) ?[^\(]+ 它只是显示: ['asdfhjlfbvj', '1dszfkl)asdfjklugnnbcvklbc', '2adfsfhj)fklajsdflkjasdf', '3asdf)bvcxv'] import re regex = r'(?:\([^)]+ \)\K)?[^\(]+' m = re.findall(regex, line) print m
    • Python 的原生 re 模块不支持 \K - 为此,您必须改用 Pypi 的 regex 模块。
    猜你喜欢
    • 2019-04-15
    • 2011-07-17
    • 2010-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多