如果分隔符在字符串中,那么如何分隔可以在字符串中多次匹配的正则表达式,即: 好吧,那么“棒棒棒”(BBS)aota“棒棒棒”(BBB)
正则表达式:“'.+'(\S+)” 从“砰”到“砰”再到“砰”。。。(BBB)而不是匹配“Bang Bang swing”(BBS)和“Bing Bong Bin”(BBB)
我有一种使用regex的方法:'[a-z0-9-/?|q~ `!@#$%^&;*()\=+]+'(\S+) 但这是过分的,老实说,我讨厌它甚至工作正常。 我对regex相当陌生,从Pythons开始实现它们显然不是最明智的开始方式。你知道吗
这个正则表达式怎么样
要获得从一个字符到另一个字符的子字符串,两者都不能出现在之间,您应该始终考虑使用negated character classes。你知道吗
所以,你可以用
见regex demo
在这里
'[^']*'
-匹配'
,后跟0个或多个除'
以外的字符,然后再跟一个'
\(
-匹配文字)
(必须转义)[^()]*
-匹配除(
和)
之外的0个或多个字符(它们不必在字符类中转义)\)
-匹配文字)
(必须在字符类外转义)。你知道吗如果在
(...)
部分之前可能有一个或多个单引号,则需要一个展开的惰性匹配正则表达式:见regex demo。你知道吗
这里,
'[^']*(?:'(?!\([^()]*\))[^']*)*'
与'.*?'
使用DOTALL标志匹配,但是由于线性regex执行,效率要高得多。见more about unrolling regex technique here。你知道吗编辑:
当输入字符串不复杂且不短时,惰性点匹配会更有效。但是,当复杂性增加时,延迟点匹配可能会导致问题。你知道吗
相关问题 更多 >
编程相关推荐