1

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

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

[...]是可选部分。

显然,我需要一个环顾四周的断言。但我不知道让它成为可选的。

4

3 回答 3

5

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

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

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

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

于 2015-02-09T09:51:57.893 回答
2
(?:\[[^\]]*\]\K)?.+$

你可以试试这个。看演示。

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

或者

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

见演示。

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

于 2015-02-09T09:49:04.383 回答
1

最简单的方法是使用

[^\[\]]*$

它匹配除括号之外的任意数量的字符,直到字符串的结尾。不过,它也会匹配xxxin ][]sd[][xxx,因此如果您需要验证字符串的结构,则此正则表达式不够具体。

于 2015-02-09T09:53:09.673 回答