Regex 忽略表达式中的可选前缀

Regex 忽略表达式中的可选前缀,regex,optional-values,Regex,Optional Values,如何在可选前缀后获取字符串?例如: Expression Result ------------------------ [asdf]xxx => xxx [foo]bar => bar []bla => bla test => test […]是可选部分 显然,我需要四处看看。但我不知道该怎么做 (?:\[[^\]]*\]\K)?.+$ 你可以试试这个。看演示 或 见演示 这是对@Maroun的正则表达式的修改,使[…]可选: (?

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

Expression    Result
------------------------
[asdf]xxx  => xxx
[foo]bar   => bar
[]bla      => bla
test       => test
[…]是可选部分

显然,我需要四处看看。但我不知道该怎么做

(?:\[[^\]]*\]\K)?.+$
你可以试试这个。看演示

见演示


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

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

注意我是如何将第一部分放在一个非捕获组中,并使用?小组之后。

最简单的方法是使用

[^\[\]]*$

它匹配除括号外的任意数量的字符,直到字符串结束。它还将匹配][]sd[][xxx中的xxx,因此,如果需要验证字符串的结构,则此正则表达式不够具体。

\[.*?\].*,第一组是您想要的,实现取决于您的language@MarounMaroun:这并不意味着[…]可选…您使用的是哪个正则表达式引擎?大多数引擎都不完全支持环顾。抱歉。更新了我的帖子以使其更精确。@TimPietzcker遗漏了可选部分。仍然捕获[]之间的部分@funkworm没有now@vks[[^\]*\]我对此感到困惑?这种输出很容易通过?:\[.\]\K?+获得。你能解释一下代码的[^\]*\]部分吗?主要是我对代码中的“^字符感到困惑?@Hussain\[.\]将捕获到最后一个]。因此,如果有多个[],那么它将捕获到最后一个]。因此,我们使用否定]技术,该技术声明捕获一个东西开始于[当它找不到]字符时,即[^\]。@vks感谢您的回复。我同意。这通过了所示的所有测试用例,并且不需要各种支持的环视。我也打算这样回答,但蒂姆把我吸引了!
[^\[\]]*$