在文本编辑器中仅使用正则表达式替换单词的第一个匹配项

时间:2016-05-27 11:34:31

标签: regex replace regex-lookarounds gedit negative-lookahead

我想在每行中只替换第一次出现的单词(默认)和另一个单词(rwd)。

如下所示我希望如此:

../app/design/adminhtml/default/default/layout/pmodule.xml
../app/design/frontend/default/default/layout/pmodule.xml
../app/design/frontend/default/default/template/company/module/gmap.phtml

要替换为:

../app/design/adminhtml/rwd/default/layout/pmodule.xml
../app/design/frontend/rwd/default/layout/pmodule.xml
../app/design/frontend/rwd/default/template/company/module/gmap.phtml

我尝试了\bdefault\b,但徒劳无功。

3 个答案:

答案 0 :(得分:3)

您可以使用具有延迟点匹配模式的正则表达式:

^(.*?)\bdefault\b

替换为\1rwd

请参阅regex demo

模式详情

  • ^ - 开始行/字符串
  • (.*?) - 第1组捕获除换行符之外的任何0+字符,直至第一个
  • \bdefault\b - 整个字default

答案 1 :(得分:1)

您可以使用此前瞻性正则表达式进行搜索:

^((?:(?!\bdefault\b).)*)default

并使用以下内容替换它:

\1rwd

RegEx Demo

答案 2 :(得分:0)

        var path = @"C:\Users\pcNameHere\Downloads\dictionary.csv";
        var destination = @"C:\Users\pcNameHere\Downloads\dictionaryEnglish.csv";
        var database = File.ReadAllLines(path);
        var pattern = ",";
        Regex reg = new Regex(pattern);
        string[] result = new string[database.Length];

        for (int i = 0; i < database.Length; i++)
        {
            result[i] = reg.Replace(database[i], "|", 2);
        }
        File.WriteAllLines(destination, result);

这是我给将来看的任何人的样本。我有带有以下行的英语词典文本文件: “算盘”,“ n。”,“撒满沙子的桌子或托盘,过去常用于绘图,计算等。”

而且我不得不用其他东西替换逗号分隔符,以便可以将它们导入数据库,因为单词定义中包含逗号,并且数据库会将它们视为新的列。这段代码更改了文本文件中每行中前两个逗号的出现。