如何在前缀可选后获取字符串?例如:
Expression Result
------------------------
[asdf]xxx => xxx
[foo]bar => bar
[]bla => bla
test => test
[...]
是可选部分。
显然,我需要一个环顾四周的断言。但是,我不知道如何将它作为可选项。
答案 0 :(得分:4)
这是@ Maroun正则表达式的修改,使[...]
可选:
(?:\[.*?\])?(.+)
https://regex101.com/r/hM2sK8/1
注意我如何将第一部分放在非捕获组中,并在组后面的?
使其成为可选项。
答案 1 :(得分:2)
(?:\[[^\]]*\]\K)?.+$
你可以尝试一下。参见演示。
https://regex101.com/r/wX9fR1/14
或
\[[^\]]*\](*SKIP)(*F)|.+$
参见演示。
答案 2 :(得分:1)
最简单的方法是使用
[^\[\]]*$
匹配除括号之外的任意数量的字符,直到字符串的结尾。它也会匹配xxx
中的][]sd[][xxx
,所以如果你需要验证字符串的结构,那么这个正则表达式就不够具体了。