如何将所有stringreplace为Notepad ++中每个string中包含的数字?

我试图find以下模式的所有值:

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

并用范围内的值replace它。

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

 .*"\d+" 

我如何做replace?

在Notepad ++中进行replace, 按Ctrl + H打开“replace”菜单。

然后,如果您选中“正则expression式”button,并且您希望replace为使用匹配模式的一部分,则必须使用“捕获组”(请参阅google上的更多内容)。 例如,假设您想要匹配以下每一行

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

使用.*"\d+"模式,只想保留数字。 然后,您可以使用括号()在匹配模式中使用捕获组,如下所示: .*"(\d+)" 。 所以现在在你的replace中,你可以简单地写$1 ,其中$ 1引用第一个捕获组的值,并将返回每个成功匹配的数字。 如果您有两个捕获组,例如(.*)="(\d+)"$1将返回stringvalue$2将返回该数字。

所以通过使用:

查找: .*"(\d+)"

replace: $1

它会回报你

 4 403 200 201 116 15 

请注意,有许多替代和更好的方式来匹配上述模式。 例如,模式value="([0-9]+)"会更好,因为它更具体,你可以肯定它只会匹配这些行。 甚至可以在不使用捕获组的情况下进行replace,但是这是一个稍微高级的话题,所以我现在就离开它:)

psxls给了一个很好的答案,但我认为我的Notepad ++版本稍有不同,所以$(美元符号)捕获不起作用。

我有Notepad ++ v.5.9.3 ,这里是你如何完成你的任务:

search模式: value = \“([0-9] *)\”并replace为: \ 1 (无论你想要做的捕获组周围)

防爆。 环绕着方括号

[\ 1] – > 会产生值=“[4]”

replace(.*")\d+(")

$1x$2

其中x是你的“范围内的价值”。

我有Notepad ++ v6.8.8

查找 :[([a-zA-Z])]

replace :[\'\ 1 \']

将产生:$ array [XYZ] => $ array ['XYZ']

查找: value="([\d]+|[\d])"

replace: \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);