如何捕获具有可变中间空间量的括号作为单个组? [英] How to capture brackets with variable in-between amount of space as a single group?
本文介绍了如何捕获具有可变中间空间量的括号作为单个组?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
假设我有以下文本:
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 expressions和PCRE
口味。您是否有任何想法可以以及如何做到这一点?
推荐答案
您可以使用branch reset group:
(?|([)(?=h*xh*])|(?<=[)h*xh*(]))
(?|
分支重置组([)(?=h*xh*])
在组1中捕获[
,在右侧可选的水平空格字符之间断言x
,后跟]
|
或(?<=[)h*xh*(])
向左声明[
,然后在可选的水平空格与组2中的捕获]
之间匹配x
)
关闭分支重置组
这篇关于如何捕获具有可变中间空间量的括号作为单个组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文