如何将所有字符串替换为Notepad ++中每个字符串中包含的数字?

时间:2013-11-29 12:39:17

标签: regex notepad++

我正在尝试使用以下模式查找所有值:

value="4"
value="403"
value="200"
value="201"
value="116"
value="15"

并将其替换为范围内的值。

我正在使用以下正则表达式来查找模式:

.*"\d+"

如何更换?

5 个答案:

答案 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);