【问题标题】:Regex - find a string and jump immediately to the next line正则表达式 - 找到一个字符串并立即跳转到下一行
【发布时间】:2013-11-15 18:09:46
【问题描述】:

例如,我正在一个更大的文本文件中寻找一些东西 - 非常简单,例如带有 \d{3} 的三位数字符串。我想做的是:当notepad++/textpad在一行中找到第一个匹配的字符串(并用其他东西替换它)时,它应该立即跳到下一行。

我怎样才能做到这一点?

我试过 \r\n ,但在这种情况下,textpad 找不到该行中第一个具有三位数字的字符串,但始终是最后一个。而且notepad++什么都找不到。

我也不能使用^,因为在我尝试查找和替换的数字之前有一些随机词(一、二、三甚至 foru 或五)。

感谢您的帮助。

【问题讨论】:

    标签: regex notepad++ textpad


    【解决方案1】:

    为此,您必须将所有剩余的行包含到匹配模式中

    例如,假设您搜索\d{3} 并有以下数据:

    qweqwe 123 rrr 445
    test tetst
    41 423 456
    

    搜索\d{3}(.*$)

    替换REPLACEMENT$1

    会给你以下结果:

    qweqwe REPLACEMENT rrr 445
    test tetst
    41 REPLACEMENT 456
    

    如果您没有包含剩余的行 (.*),结果将是:

    qweqwe REPLACEMENT rrr REPLACEMENT
    test tetst
    41 REPLACEMENT REPLACEMENT
    

    在 Notepad++ 中,您必须取消选中“.matches newline”选项。

    【讨论】:

    • 是的,这很完美!谢谢!为什么行尾用 $ 而不是 ^ 开头?
    • 您也可以使用^,例如搜索:^(.*?)\d{3},替换:$1REPLACEMENT 会产生相同的结果!请注意,现在我们必须使用.*?,这是一个非贪婪(又名懒惰)匹配。我选择$ 的唯一原因是因为如果我用文字来描述它,它的措辞更接近您的标题“查找模式并跳转到下一行”而不是^,我将其描述为“匹配每行中第一次出现模式”。
    猜你喜欢
    • 2015-03-15
    • 2021-07-23
    • 1970-01-01
    • 2017-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-16
    相关资源
    最近更新 更多