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

Ant*_*lin 104 regex notepad++

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

value="4"
value="403"
value="200"
value="201"
value="116"
value="15"
Run Code Online (Sandbox Code Playgroud)

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

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

.*"\d+"
Run Code Online (Sandbox Code Playgroud)

我怎样才能更换?

psx*_*xls 187

在Notepad ++中替换,按Ctrl+ H打开"替换"菜单.

然后,如果您选中"正则表达式"按钮,并且您希望替换中使用匹配模式的一部分,则必须使用"捕获组"(在谷歌上阅读更多内容).例如,假设您要匹配以下每一行

value="4"
value="403"
value="200"
value="201"
value="116"
value="15"
Run Code Online (Sandbox Code Playgroud)

使用.*"\d+"模式,只想保留数字.然后,您可以使用一个捕获组在匹配模式,使用括号(),这样的:.*"(\d+)".因此,现在在您的替换中,您只需编写$1,其中$ 1引用第一个捕获组的值,并返回每个成功匹配的数字.例如(.*)="(\d+)",如果您有两个捕获组,$1则会返回该字符串value$2返回该数字.

所以通过使用:

找: .*"(\d+)"

更换: $1

它会回报你

4
403
200
201
116
15
Run Code Online (Sandbox Code Playgroud)

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

  • 对于替换,'$ 1`对我来说不起作用.我使用了`\ 1`而且工作正常. (19认同)
  • `\ 1`适用于所有版本的Notepad ++.`$ 1`仅适用于较新的. (12认同)

dch*_*yka 15

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

我有Notepad ++ v.5.9.3,以下是如何完成任务的:

搜索模式:value = \"([0-9]*)\" 并替换为:\ 1(无论你想在该捕获组周围做什么)

防爆.用方括号环绕

[\ 1] - > 会产生值="[4]"


mar*_*sze 6

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

$1x$2

x你的"范围内的价值" 在哪里?