在第二个冒号后删除所有内容

时间:2018-08-04 16:54:07

标签: regex text notepad++

我需要删除橙色后冒号之后的所有内容

示例:

apple:orange:banana:grapes:

成为:

apple:orange

为此,我查找了一百万个不同的参考文献,却找不到解决方案。

当前在Notepad ++中使用“查找/替换”功能进行此操作。

3 个答案:

答案 0 :(得分:1)

查找内容(^[a-z]+:[a-z]+).*$

  • (^[a-z]+:[a-z]+)第一个捕获组。匹配字符串开头的字母字符,冒号,字母字符。
  • .*$匹配所有内容,直到字符串末尾。

替换为\1

  • \1替换为捕获的第一组。

您当然可以使表达式更笼统:

查找内容(^[^:]+:[^:]+).*$

  • (^[^:]+:[^:]+)捕获组。匹配字符串开头的冒号,冒号和冒号以外的其他任何字符。
  • .*$匹配所有内容,直到字符串末尾。

替换为\1

  • \1替换为捕获的第一组。

如下面的评论中revo所指出的那样,在记事本++中使用上述模式时,应禁用matches newline选项。

答案 1 :(得分:1)

如果我对您的理解正确,则可以使用插件ConyEdit来执行此操作。您可以使用其命令cc.dac <nth>/<regex>/[<mode>] [-options]cc.dac的意思是:在列之后删除。

例如:
在后台运行ConyEdit的情况下,复制下面的文本和命令行,然后粘贴:

 apple:orange:banana:grapes:
 cc.dac 2/:/ -d

答案 2 :(得分:0)

文件有多大?

如果它是一个小文件,您可能可以编写一个简单的代码,例如遵循Java中的代码片段。大多数编程语言将支持此类操作。

String input = "apple:orange:banana:grapes:";
String[] arrOfStr = input.split(":");
int index = arrOfStr.indexOf("orange");
String[] arrOfStrSub = Arrays.copyOf(arrOfStr, 0, index);
String output = StringUtils.join(arrOfStrSub, ':');