【问题标题】:Notepad++ Replacing spaces between numbers with hyphenNotepad ++用连字符替换数字之间的空格
【发布时间】:2014-10-26 23:33:58
【问题描述】:

我有一个文件,其中包含用于施工计费的 CSI 代码。它们采用以下格式:

00 01 01 Project Title Page
00 01 05 Certifications Page
00 01 07 Seals Page
00 01 10 Table of Contents
00 01 15 List of Drawing Sheets
00 01 20 List of Schedules

我们正在改变员工命名某些投标文件的方式,我需要让这个列表具有以下格式:

00-01-01 Project Title Page
00-01-05 Certifications Page
00-01-07 Seals Page
00-01-10 Table of Contents
00-01-15 List of Drawing Sheets
00-01-20 List of Schedules

我对正则表达式非常陌生,我似乎无法让替换部分正常工作。要搜索文件,我使用非常简单的 [0-9] [0-9] 。这突出了我有兴趣更改的每个部分。但是,无论我使用什么替换条件,我都会用连字符替换整个搜索语句。作为记录,我正在使用 Notepad ++,并且确实将其设置为使用正则表达式。我在其他具有类似标准的文章中尝试了许多替换字符串,但均未成功。感谢您在此问题上的时间和考虑。

【问题讨论】:

    标签: regex notepad++


    【解决方案1】:

    搜索:(\d)\s+(\d)
    替换为:$1-$2

    • (\d) 是数字,保存到捕获组中
    • \s+ 可以是数字之间的任何空格
    • 在替换中,我们保留捕获组 $1$2(数字),但在它们之间放置一个连字符,而不是之前的空格。

    这将涵盖我在“用连字符替换数字之间的空格”中看到的任何情况。

    如果您只想要 3 个数字全部由空格分隔的特定场景,您可以将搜索更改为 (\d+)\s+(\d+)\s+(\d+) 并将您的替换为 $1-$2-$3

    如果您只需要常规空格而不需要制表符或其他任何内容,则可以将 \s 替换为简单空格。

    【讨论】:

    • 谢谢,我还发现使用转义也可以。\1-\2。使用()有什么意义?这就是告诉正则表达式记住它找到的任何东西的原因吗?例如,当我在搜索字段中使用 ([0-9]) ([0-9]) 并在替换字段中使用 $1-$2 或 \1-\2 时,它也可以工作。
    • @G.Oxsen、\d[0-9] 的工作方式相同。似乎$1\1 在替换中的工作方式相同。 () 在正则表达式中的意义在于它创建了一个“捕获组”。第一个(0 索引)捕获组将始终是整个正则表达式匹配,第二个(1 索引)将是第一个捕获组。我必须使它成为一个捕获组,以基本上“保存”要在替换中使用的数据。
    【解决方案2】:

    您不需要任何捕获组。

    正则表达式:

    (?<=\d) (?=\d)
    

    替换字符串:

    -
    

    DEMO

    【讨论】:

    • (?&lt;=^\d{2,2}) (\d+) => -\1- 但这真的很难看:D
    • 标题Replacing spaces between numbers with hyphen。所以这个(?&lt;=\d) (?=\d) 会做得很好。
    【解决方案3】:

    Notepad++ 内置功能

    不需要使用正则表达式,您可以使用 Notepad++ 内置功能来做到这一点。

    你必须去编辑 -> 列模式

    用正则表达式查找/替换

    如果您仍想使用正则表达式。然后你可以这样做:

    您可以搜索:^(\d\d)\s(\d\d)\s

    并替换为:\1-\2-

    【讨论】:

      【解决方案4】:
      1. CTRL+F(在窗口中)
      2. 替换
      3. 正则表达式☑
      4. 搜索^(\d+) (\d+) (\d+),替换\1-\2-\3

        • ^ 是行首(因此不会意外匹配文本中的任何内容)
        • () 正在捕获组的开始和结束
        • \d+ 是多位数字
        • 普通空格不需要任何特殊符号(如果它们是不同的空白字符,您可以使用\s 代替
        • \1\2\3 是捕获组的实际匹配项

        只有 2 个捕获组,您必须单击全部替换按钮两次,并从一开始就忽略 ^

      5. 全部替换

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-03-16
        • 2012-07-31
        • 2021-10-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多