【问题标题】:REGEX in Notepad++ find/replace记事本++中的正则表达式查找/替换
【发布时间】:2016-05-11 19:04:26
【问题描述】:

是否可以在 Notepad++ 中查找/替换的“查找”部分中使用正则表达式的值?

这就是我所拥有的:

FIND: ^.{105}.*(.)
REPLACE: \r\n

要替换的值是我文件中的第 106 个字符。假设它是~

现在查找/替换应该找到并替换所有出现的 ~ 并将它们全部替换为 '\r\n'(~ 表示行尾字符)

它不起作用,它替换整个字符串而不是第 106 个字符,并且只替换一次而不是多次替换文件。

这样做的全部目的是将此设置在热键宏上,以便可以快速且频繁地完成。

【问题讨论】:

  • 输入文本:[123456789[..]104~line2~line3randomtext~line4sometext] 预期结果是:对于这行文本:正则表达式应该获得第 105 个字符(在这种情况下为 ~)然后用常量字符 /r 查找并替换文本中正则表达式(示例中的〜)返回的所有字符所以基本上,这里的变量是查找/替换的“查找”部分中的文本,常量是“替换由“文本 (\r)。修改后的文本:123456789[..]104/rline2/rline3randomtext/rline4sometext

标签: regex notepad++


【解决方案1】:

我认为你想要一些类似的东西:

Find: ^(.{105}.) Replace: \1\r\n

您需要将事物包装在捕获组中,否则您的 ^ 将强制它仅匹配行的开头。您还需要将第一个捕获组作为替换字符串的一部分包含在内,这样它就不会破坏整个匹配。

【讨论】:

  • 这会在 105 个字符长的多行中换行。它应该对这一行做些什么:[ 123456789[..]104~line2~line3randomtext~line4 ] 正则表达式获取第 105 个字符(在这种情况下为 ~),然后在文本中查找并替换所有 ~ 为 (/r) 所以在这种情况下,变量是要查找的文本。替换文本是硬编码的 (\r)。
  • 这会将一行分成多行,每行 105 个字符。预期结果是:对于这行文本:[123456789[..]104~line2~line3randomtext~line4sometext] 现在正则表达式应该获取第 105 个字符(在这种情况下为 ~),然后查找并替换所有以前的字符(~来自示例)在文本中通过常量 char (/r) 这里变量是要查找的文本。常量是替换文本 (\r)。
【解决方案2】:

你可以这样做:

查找内容:^(.{105}).
替换为:$1\r\n

确保您已检查 Regular expression 但未检查 dot matches newline

然后点击全部替换

这将在第 1 组中捕获每行中的前 105 个字符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-19
    • 2012-09-10
    • 1970-01-01
    • 2019-02-10
    • 1970-01-01
    • 2015-09-10
    • 1970-01-01
    相关资源
    最近更新 更多