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


108

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

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

并用范围内的值替换它。

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

.*"\d+"

我该如何更换?


2
什么是替换零件?你能举个例子吗?
Toto

^。* value =“([[^”] *)“。* $检查此正则表达式并在需要该值的位置重新填充值\ 1
Nikhil KS

Answers:


191

在要替换的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]+)"会更好,因为它更具体,您将确保仅匹配这些行。甚至可以在不使用捕获组的情况下进行替换,但这是一个稍微高级的主题,因此我将暂时保留它:)


19
对于替换,$1对我不起作用。我\1改用了,那行得通。
詹森·惠勒

12
\1适用于所有版本的Notepad ++。 $1仅适用于较新的版本。
Cullub 2014年

我猜想这对Hex Editor插件不起作用。在十六进制视图模式下,Notepad ++不显示“ Regular Expression搜索/替换” 选项。在文本视图模式下,我确实看到了Regular Expression“搜索/替换” 选项。我正在使用Notepad ++版本6.9.2,这是当前版本。
凯文·费根

15

psxls提供了一个很好的答案,但我认为我的Notepad ++版本略有不同,因此$(美元符号)捕获无效。

我有Notepad ++ v.5.9.3,这是完成任务的方法:

搜索模式:value = \“([[0-9] *)\” 并替换为:\ 1(您要对该捕获组执行的任何操作)

例如 环绕方括号

[\ 1]-> 将产生value =“ [4]”


1
\1帮助我保留了该号码,但删除了它后面的引号。我在的文档中有大约7400行tablename.columnname = '12345'。第一个引号很容易删除,第二个引号是\1在replace文本框中使用来完成的。谢谢,+ 1
Ben Fransen

6

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

$1x$2

x您的“范围内的价值” 在哪里?



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

3
这个JavaScript解决方案与Notepad ++标记的问题有什么关系?
杰森·艾勒2014年

错误的,中断的响应1和2可能与用Notepad ++标记的问题有什么关系?
user3178007 2014年

为什么我在这里问这个问题?因为我无法创造问题。因为我的信誉评分不够。
user3178007 2014年

1
像您声称的那样,提问时没有这样的声誉要求-您不可能受到限制。再试一次:stackoverflow.com/questions/ask
BoltClock

有人问了这个问题。stackoverflow.com/questions/24112018/…但搜索范围有限。局限是!
user3178007 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.