簡體   English   中英

用於在字符串中查找模式的 Javascript 正則表達式,排除可能的前面單詞匹配

[英]Javascript regex to find a pattern in a string, excluding a possible preceding word match

變量中有一個文字/文本字符串:

var copypaste, replaced;
var verbdb = ["keep","know","enjoy"];
var arrayLength = verbdb.length;

for (var i = 0; i < arrayLength; i++) {
    copypaste = "One of the reasons first_name keep waking up at night, is blah blah blah. Try this, let first_name know and see blah blah blah. Remember that first_name enjoy being challenged and blah blah blah.";

    replaced = copypaste.replace(RegExp("[^let]? first_name " + verbdb[i] + "(\s|\.)","g")," first_name " + verbdb[i] + "_object_s\$1");
}

我試圖從replaced變量中得到的是僅當 first_name 前面有let一詞時才排除。

“first_name keep_object_s 晚上醒來的原因之一,是等等等等。試試這個,讓 first_name 知道,看看等等等等。記住 first_name enjoy_object_s 受到挑戰,等等等等。”;


所以在這個例子中:

  1. 第一個模式匹配(保持)並替換為添加的_object_s
  2. 由於“讓”這個詞,第二個模式不匹配(知道),所以沒有替換
  3. 第三個模式 MATCHES (enjoy) 並替換為添加的_object_s

你可以試試這個:

(?:\b)(?!let)(?=\w+\sfirst_name\s+(know|keep|enjoy))(\w+ \w+)\s+(\w+)

解釋

 const regex = /(?:\\b)(?!let)(?=\\w+\\sfirst_name\\s+(know|keep|enjoy))(\\w+ \\w+)\\s+(\\w+)/g; const str = `One of the reasons first_name keep waking up at night, is blah blah blah. Try this, let first_name know and see blah blah blah. Remember that first_name enjoy being challenged and blah blah blah`; const subst = `$2 _object_s`; const result = str.replace(regex, subst); console.log(result);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM