【问题标题】:Using Regex in Notepad++ to Replace a Character在 Notepad++ 中使用正则表达式替换字符
【发布时间】:2013-09-12 23:51:29
【问题描述】:

我有一个很大的 notepad++ 文件,并且有一个实例,其中一个字段的长度为 16,可以包含数字和字母,后跟一个逗号,然后是另一个以字母开头的字段。我试图确保逗号后的下一个字段以“。”开头。

到目前为止,我有这个正则表达式。我用红宝石表达式检查了它,它看起来是正确的。我只是不知道如何在逗号之后插入一个 " 来开始下一个字段。这可能真的很容易我只是在这里遗漏了一些东西。对此的任何帮助将不胜感激!

([a-zA-Z0-9]{16}\,[a-zA-Z]+)

所以我想在上面的转义逗号后添加一个 "。

【问题讨论】:

  • \, 后面加上\" 有什么问题?
  • @KenWhite OP 正在尝试进行搜索和替换

标签: regex replace notepad++


【解决方案1】:

有两种选择。

您可以使用capturing 并写回您匹配的内容(除了引号):

([a-zA-Z0-9]{16},)([a-zA-Z]+)

每组括号生成一个捕获的组。您可以在替换字符串中引用它们与$n 匹配的内容:$1"$2

请注意,逗号无需转义。

替代方案是lookarounds。您在环视中匹配的内容不是匹配的一部分,因此不会被删除。如果您将所有内容放在环视中所需的位置,您将匹配一个位置而不是字符串,并且替换字符串将简单地插入该位置:

(?<=[a-zA-Z0-9]{16},)(?=[a-zA-Z]+)

并将其替换为"

无论如何,请务必升级到 Notepad++ 6。

最后请注意,在这两种情况下,末尾的 + 都无关紧要 - 如果只有一个字母,那么还有“一个或多个字母”。 (有一个非常不可能的极端情况会产生影响,但这可能超出了这个问题的范围。)

【讨论】:

  • 非常感谢。我使用了第一个答案,它奏效了。在notepad ++中使用正则表达式时,我从未使用过replace。从现在开始,我现在将如何做到这一点。谢谢!
【解决方案2】:

应该这样做:

([a-zA-Z0-9]{16}\,\"[a-zA-Z]+)

【讨论】:

    猜你喜欢
    • 2015-09-28
    • 1970-01-01
    • 2012-04-01
    • 1970-01-01
    • 2011-03-07
    • 1970-01-01
    • 2014-06-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多