小编典典

替换数据块中的多个模式

algorithm

我需要找到在单个文本块上匹配多个正则表达式的最有效方法。举一个我需要的例子,考虑一段文本:

“ Hello World真是美好的一天”

我想用“ Bye”代替“ Hello”,用Universe代替“
World”。我总是可以使用各种语言提供的String.replace之类的功能在课程循环中完成此操作。

但是,我可能会有一个带有多个字符串模式的巨大文本块,需要进行匹配和替换。

我想知道是否可以使用正则表达式有效地执行此操作,还是必须使用LALR之类的解析器。

我需要在JavaScript中执行此操作,因此,如果有人知道可以完成此操作的工具,将不胜感激。


阅读 231

收藏
2020-07-28

共1个答案

小编典典

您可以传递一个函数来替换:

var hello = "Hello World what a beautiful day";
hello.replace(/Hello|World/g, function ($0, $1, $2) // $3, $4... $n for captures
{
    if ($0 == "Hello")
        return "Bye";
    else if ($0 == "World")
        return "Universe";
});

// Output: "Bye Universe what a beautiful day";
2020-07-28