如何捕获具有可变中间空间量的括号作为单个组? [英] How to capture brackets with variable in-between amount of space as a single group?

查看:0
本文介绍了如何捕获具有可变中间空间量的括号作为单个组?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假设我有以下文本:

Yes: [x]
Yes: [  x]
Yes: [x  ]
Yes: [  x  ]
No: [
No: ]

我感兴趣的是捕获[]的尖括号,x包含在x两侧具有可变水平间隔量的x。我遇到的问题是两个尖括号必须捕获到ID(即$1)相同的组中。

我从使用以下regex的积极前瞻和后视断言的组合开始:

[(?=h*x)|(?<=x)h*K]

这会产生以下匹配(即,为清楚起见,请参阅启用了extended标志的demo):

然后,我尝试在整个表达式周围放置一个捕获组,但匹配扩展到正向回望后的水平空间(?<=x)h*,如下所示(即,另请参阅demo)。

我正在使用Oniguruma regular expressionsPCRE口味。您是否有任何想法可以以及如何做到这一点?

推荐答案

您可以使用branch reset group

(?|([)(?=h*xh*])|(?<=[)h*xh*(]))
  • (?|分支重置组
    • ([)(?=h*xh*])在组1中捕获[,在右侧可选的水平空格字符之间断言x,后跟]
    • |
    • (?<=[)h*xh*(])向左声明[,然后在可选的水平空格与组2中的捕获]之间匹配x
  • )关闭分支重置组

Regex demo

这篇关于如何捕获具有可变中间空间量的括号作为单个组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆