忽略表达式中的可选前缀

时间:2015-02-09 09:45:59

标签: regex optional-values

如何在前缀可选后获取字符串?例如:

Expression    Result
------------------------
[asdf]xxx  => xxx
[foo]bar   => bar
[]bla      => bla
test       => test

[...]是可选部分。

显然,我需要一个环顾四周的断言。但是,我不知道如何将它作为可选项。

3 个答案:

答案 0 :(得分:4)

这是@ Maroun正则表达式的修改,使[...]可选:

(?:\[.*?\])?(.+)

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

注意我如何将第一部分放在非捕获组中,并在组后面的?使其成为可选项。

答案 1 :(得分:2)

(?:\[[^\]]*\]\K)?.+$

你可以尝试一下。参见演示。

https://regex101.com/r/wX9fR1/14

\[[^\]]*\](*SKIP)(*F)|.+$

参见演示。

https://regex101.com/r/wX9fR1/15

答案 2 :(得分:1)

最简单的方法是使用

[^\[\]]*$

匹配除括号之外的任意数量的字符,直到字符串的结尾。它也会匹配xxx中的][]sd[][xxx,所以如果你需要验证字符串的结构,那么这个正则表达式就不够具体了。