【问题标题】:How to replace all strings to numbers contained in each string in Notepad++?如何将所有字符串替换为记事本++中每个字符串中包含的数字?
【发布时间】:2013-12-15 16:02:35
【问题描述】:

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

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

并将其替换为作用域内的值。

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

.*"\d+"

如何更换?

【问题讨论】:

  • 替换零件是什么?你能举个例子吗?
  • ^.*value="([^"]*)".*$ 检查此正则表达式并将值 \1 替换为所需值

标签: regex notepad++


【解决方案1】:

在要替换的 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 对我不起作用。我改用了\1,效果很好。
  • \1 适用于所有版本的 Notepad++。 $1 仅适用于较新的。
  • 我猜这不适用于Hex Editor 插件。在十六进制视图模式下,Notepad++ 不显示搜索/替换的 Regular Expression 选项。在文本视图模式下,我确实看到了用于搜索/替换的 Regular Expression 选项。我使用的是 Notepad++ 版本 6.9.2,这是目前的当前版本。
【解决方案2】:

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

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

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

例如。用方括号括起来

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

【讨论】:

  • \1 帮助我保留了号码,但删除了它后面的引号。我在tablename.columnname = '12345' 这样的文档中有大约 7400 行。第一个引号很容易删除,第二个是在替换文本框中使用您的\1 完成的。谢谢,+1
【解决方案3】:

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

$1x$2

x 是您的“范围内的值”。

【讨论】:

    【解决方案4】:

    我有 Notepad++ v6.8.8

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

    替换:[\'\1\']

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

    【讨论】:

      【解决方案5】:

      查找: 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);
      

      【讨论】:

      • 这个 JavaScript 解决方案与使用 Notepad++ 标记的问题有何关系?
      • 错误的、损坏的响应 1 和 2 与使用 Notepad++ 标记的问题有何关系?
      • 为什么我在这里问这个问题?因为我不能提出问题。因为我的声望分数不够。
      • 没有像您声称的那样提出问题的声誉要求 - 您不可能可能已受到限制。再试一次:stackoverflow.com/questions/ask
      • 问了这个问题。 stackoverflow.com/questions/24112018/… 但搜索的字数有限。限制是!
      猜你喜欢
      • 1970-01-01
      • 2017-06-04
      • 1970-01-01
      • 2019-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多