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感谢您的回复。我同意。这通过了所示的所有测试用例,并且不需要各种支持的环视。我也打算这样回答,但蒂姆把我吸引了!
[^\[\]]*$