【问题标题】:Notepad++ regex to find 3 consecutive numbersNotepad ++正则表达式查找3个连续数字
【发布时间】:2010-04-22 15:56:02
【问题描述】:

我正在尝试使用 Notepadd++ 查找所有出现的 width=xxx 以便我可以将它们更改为 width="xxx"

据我所知,width=[^\n] 只选择 width=x

【问题讨论】:

    标签: regex notepad++


    【解决方案1】:

    如果你需要正好 3 个数字,下面在 Notepad++ 中测试:

    width=\d\d\d[^\d]
    

    进一步阅读您的需求,您可以使用标记功能:

    Find what:    width=(\d\d\d)([^\d])
    Replace with: width="\1"\2
    

    这里,正则表达式的 (n) 括号部分存储(按顺序)为 \1,\2,...\n,可以在替换字段中引用。

    作为一个正则表达式引擎,Notepad++ 很差。 Here 是对所支持内容的描述。很基本。

    【讨论】:

    • 所以它不支持{3},但它确实支持否定字符类(并不总是支持?)他们在记事本++中放入了什么样的“正则表达式”疯狂???
    • 虽然它确实支持\d,它没有在那个页面上列出,所以我怀疑那个页面不准确并且已经过时了。我用过 \s+ 和 \t。
    • width="\1"\2 替换叶子 width="",所以看起来 \1 没有返回任何数字
    • 抱歉,我没有将搜索更改为 width=(\d\d\d)。谢谢大家!
    • 快速说明,此限制不再适用 - 从版本 6 开始,Notepad++ 支持(使用?)PCRE - perl 兼容的正则表达式库;据我所知,这很快将其从最差的正则表达式支持提升到了一流的支持!
    【解决方案2】:

    看Notepad++ Regular Expression list 那里似乎不支持{n} 符号来匹配n 字符,所以\d{3} 不起作用。

    但是,对我有用并且可能被视为 hack 的是:\d\d\d

    在 Notepad++ 中测试并且已经工作,查找字段使用(\d\d\d),替换字段使用"\1"\2。

    【讨论】:

    • 这是一个成功的宽度=\d\d\d,但我不知道如何设置替换以保留 3 个数字
    【解决方案3】:

    正如 Tao 所说,从版本 6 开始,Notepad++ 支持 PCRE。

    所以现在你可以写:

    \d{1,5}
    

    【讨论】:

    • 我在 6.3 中测试过,它说“不正确的正则表达式”...应该是 \d{1,5}
    • 太棒了!正是我正在寻找的。例如,使用\d{10} 来查找由 10 个数字组成的字符串。
    【解决方案4】:
    /(width=)(\d+?)/gim
    

    因为您可能需要可变数字。有些宽度可能是 8、15、200 等。

    如果你想指定一个范围,你可以这样做:

    /(width=)(\d{1,3)/gim
    

    其中1代表下限,3代表上限。

    我对表达式的两个部分进行了分组,所以当你替换时,你可以保留第一部分而不是把它吹走。

    【讨论】:

      【解决方案5】:

      试过了:用width="\1" 替换width=([0-9][0-9][0-9]) 并且工作正常...当然可能不是最好的语法,但它可以工作...

      【讨论】:

        【解决方案6】:

        我会试试这个:width=(\d{3,}),检查正则表达式,还有。匹配换行符

        适用于我的版本:7.5.4

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-09-16
          • 1970-01-01
          • 2014-09-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多