【发布时间】:2014-03-05 15:42:07
【问题描述】:
我正在为 Sublime Text 编辑器(使用 Oniguruma 正则表达式定义)编写语法荧光笔。基本上,我有这样的东西:
正则表达式:
\((\w+\s*)*\)
测试:
(how are you)
捕获组:
1. you
我的问题是,只有捕获组中的最后一次匹配(因此突出显示)而不是捕获组的全部内容。
在我的具体情况下:
正则表达式:
\(\w+(\s+(\?\w+\s+)+-\s+(\w+))*\)
测试:
(at ?l - location ?x - object)
捕获组:
1. ?x - object
2. ?x
3. object
但是,我想匹配整个组的内容,像这样:
1. ?x - object AND ?l - location
2. ?x AND ?l
3. object AND location
【问题讨论】:
-
我不确定我是否理解。对于给定的匹配,单个捕获组只会分配一个值。当您在组匹配中写“AND”时,您是说您希望这两个值同时保存在 \1、\2 和 \3 中,还是只是希望文字值是“?x - object ?l - 位置”、“?x ?1”和“对象位置”?
-
是的,我希望在一个捕获组中同时保存两个(或更多)值(但显然这是不可能的)。我的问题是,只有
?x和object在我的示例中突出显示,但我想为?x和?l分配一种颜色,为object和location分配另一种颜色(并相应地在我的第一个示例中,我想强调how、are和you而不仅仅是you)。
标签: regex sublimetext2 oniguruma