正则表达式反向引用不返回任何内容?

问题描述 投票:0回答:3

我是正则表达式新手,所以请耐心等待。

我正在尝试将 Sublime Text 3 中所有显示

col-md-(\w+)
的内容替换为
col-md-(\w+) col-lg-(\w+)

但是,当我使用

col-md-\1 col-lg-\1
线时,它就变成了
col-md- col-xs-

我做错了什么?

谢谢!

更新:根据请求,我显示输入/输出:

...当我更换全部时

regex sublimetext sublimetext3
3个回答
1
投票

删除你的前瞻,它就会起作用:

Find What:    col-md-(\w+)
Replace With: col-xs-$1 col-sm-$1 col-md-$1 col-lg-$1

或者使用

$2
而不是
$1
,因为你在这个前瞻中有一个捕获组:

Find What:    (?!col-md-(\w+) )col-md-(\w+)
Replace With: col-xs-$2 col-sm-$2 col-md-$2 col-lg-$2

1
投票

OMG,您需要使用

$2
而不是
$1
。由于您的否定前瞻已经包含一个捕获组,因此仅当您在替换部分中使用
$1
时,正则表达式引擎才会引用该组。在替换部分中使用
$2
而不是
$1
,这样它将引用不在负向前查找范围内的组。

col-xs-$2 col-sm-$2 col-md-$2 col-lg-$2

0
投票

试试这个:

col-md-(\w+)(?!\s*col-lg)
© www.soinside.com 2019 - 2024. All rights reserved.