【发布时间】:2019-06-20 09:36:19
【问题描述】:
从这个字符串:
asdfhjlfbvj(1dszfkl)asdfjklugnnbcvklbc(2adfsfhj)fklajsdflkjasdf(3asdf)bvcxv
有了这个:
\\(.*?\\)
你得到 (1dszfkl)、(2adfsfhj) 和 (3asdf)
如何获取asdfhjlfbvj、asdfjklugnnbcvklbc、fklajsdflkjasdf和bvcxv?
谢谢!!
【问题讨论】:
从这个字符串:
asdfhjlfbvj(1dszfkl)asdfjklugnnbcvklbc(2adfsfhj)fklajsdflkjasdf(3asdf)bvcxv
有了这个:
\\(.*?\\)
你得到 (1dszfkl)、(2adfsfhj) 和 (3asdf)
如何获取asdfhjlfbvj、asdfjklugnnbcvklbc、fklajsdflkjasdf和bvcxv?
谢谢!!
【问题讨论】:
匹配非括号字符,预读( 或字符串结尾:
[^()]+(?=\(|$)
https://regex101.com/r/1XOjjA/1
或者,如果你可以使用\K,为了更高效,匹配括号和其中包含的内容,然后使用\K 忘记:
(?:\([^)]+\)\K)?[^(]+
【讨论】:
re 模块不支持 \K - 为此,您必须改用 Pypi 的 regex 模块。