我正在尝试使用以下模式查找所有值:
value="4"
value="403"
value="200"
value="201"
value="116"
value="15"
并将其替换为范围内的值。
我正在使用以下正则表达式来查找模式:
.*"\d+"
如何更换?
答案 0 :(得分:172)
在要替换的Notepad ++中,按 Ctrl + H 打开“替换”菜单。
然后,如果您选中“正则表达式”按钮,并且您希望替换中使用匹配模式的一部分,则必须使用“捕获组”(请阅读google上的更多内容)。例如,假设您要匹配以下每一行
value="4"
value="403"
value="200"
value="201"
value="116"
value="15"
使用.*"\d+"
模式并且只想保留数字。然后,您可以使用括号(
和)
在匹配模式中使用捕获组,如下所示:.*"(\d+)"
。所以现在在替换中你可以简单地写$1
,其中$ 1引用第一个捕获组的值,并返回每个成功匹配的数字。如果您有两个捕获组,例如(.*)="(\d+)"
,$1
将返回字符串value
,$2
将返回该数字。
所以使用:
查找:.*"(\d+)"
替换:$1
它会让你回来
4
403
200
201
116
15
请注意,有许多替代和更好的方法来匹配上述模式。例如,模式value="([0-9]+)"
会更好,因为它更具体,您将确保它只匹配这些行。甚至可以在不使用捕获组的情况下进行替换,但这是一个稍微高级的主题,所以我现在就把它留下来:)
答案 1 :(得分:13)
psxls给出了一个很好的答案,但我认为我的Notepad ++版本略有不同,因此$(美元符号)捕获不起作用。
我有 Notepad ++ v.5.9.3 ,以下是您完成任务的方法:
搜索模式: value = \“([0-9] *)\” 并替换为: \ 1 (无论您想围绕该捕获组做什么)
实施例。用方括号环绕
[\ 1] - > 将产生value =“[4]”
答案 2 :(得分:6)
替换(.*")\d+(")
使用$1x$2
x
是你的“范围内的价值”。
答案 3 :(得分:0)
我有 Notepad ++ v6.8.8
查找:[([a-zA-Z])]
替换:[\' \ 1 \']
会产生: $ array [XYZ] => $阵列[' XYZ']
答案 4 :(得分:-3)
查找: value="([\d]+|[\d])"
替换 \1
它真的会让你回头
4
403
200
201
116
15
<强> JS:强>
a='value="4"\nvalue="403"\nvalue="200"\nvalue="201"\nvalue="116"\nvalue="15"';
a = a.replace(/value="([\d]+|[\d])"/g, '$1');
console.log(a);