【问题标题】:How to use regex to remove semi colons?如何使用正则表达式删除分号?
【发布时间】:2019-06-13 01:15:00
【问题描述】:

你好,我有这样的数据:

a;b;c;d
1;2;3;4
a;g;h;j
f;g;f;d
a;d;8;d

我想修改一下:

a;bc;d
1;23;4
a;gh;j
f;gf;d
a;d8;d

显然我有很多行,但每次分号都在同一个位置。我试图用记事本++选择列并用任何东西替换分号,但框是灰色的......

你有解决办法吗?

谢谢!

【问题讨论】:

    标签: regex notepad++ sublimetext3 sublimetext2


    【解决方案1】:

    这是我进行工作的在线正则表达式测试器,您可以用样本替换您的数据。

    Regex : (\w+;)((\w+);(\w+))(;\w+)
    

    DEMO

    【讨论】:

      【解决方案2】:

      按住 ALT+SHIFT 并使用箭头键选择第二个分号并将其删除。

      按住 ALT 并单击并拖动鼠标以选择第二个分号并将其删除。

      • 查找:^(...)(.)
      • 替换为:\1

      【讨论】:

        【解决方案3】:
        • Ctrl+H
        • 查找内容:^[^;]+;[^;]+\K;
        • 替换为:LEAVE EMPTY
        • 检查环绕
        • 检查正则表达式
        • 全部替换

        说明:

        ^           # beginning of string
          [^;]+     # 1 or more non semicolon
          ;         # 1 semi colon
          [^;]+     # 1 or more non semicolon
          \K        # forget all we have seen until this position
          ;         # 1 semi colon
        

        给定示例的结果:

        a;bc;d
        1;23;4
        a;gh;j
        f;gf;d
        a;d8;d
        

        【讨论】:

          【解决方案4】:

          如果数据的可能值是小写字符 a-z 或数字,您还可以使用捕获组和字符类 [a-z0-9] 捕获前 3 个字符,然后匹配分号。如果可以有超过 1 个字符,您可以对字符类使用量词 +,例如 [a-z0-9]+

          然后替换为第一个捕获组。

          找到什么

          ^([a-z0-9];[a-z0-9]);

          替换为

          $1

          Regex demo

          或使用\K,您可以找到^[a-z0-9];[a-z0-9]\K; 并将替换为空。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-02-16
            • 2018-08-25
            • 1970-01-01
            • 1970-01-01
            • 2013-01-13
            • 2010-10-13
            相关资源
            最近更新 更多