How to replace all strings to numbers contained in each string in Notepad++?

I'm trying to find all values with following pattern :

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

and replace it with value inside scopes.

I'm using the following regex to find the pattern :

.*"\d+"

How can I do a replacement?

313228 次浏览

更换 (.*")\d+(")

$1x$2

其中 x是“作用域内的值”。

In Notepad++ to replace, hit Ctrl+H to open the Replace menu.

然后,如果你检查“正则表达式”按钮,你想在你的替换使用匹配模式的一部分,你必须使用“捕获组”(阅读更多关于 谷歌)。例如,假设您希望匹配以下每一行

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]+)"会更好,因为它更具体,您将确保它将只匹配这些行。甚至可以不使用捕获组来进行替换,但是这是一个稍微高级一些的主题,所以我现在就把它放在一边:)

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

替换: \1

它真的会让你回来的

4
403
200
201
116
15 < br/>

约翰逊:

a='value="4"\nvalue="403"\nvalue="200"\nvalue="201"\nvalue="116"\nvalue="15"';
a = a.replace(/value="([\d]+|[\d])"/g, '$1');
console.log(a);

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

我有 记事本 + + v5.9.3,以下是你完成任务的方法:

搜索模式: < strong > value = “([0-9] *)” 并替换为: \1(在捕获组周围您想要做的任何事情)

用方括号括起来

[1]-> 将产生价值 = “[4]”

我有 记事本 + + v6.8.8

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

Replace: [\'\1\']

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