Javascript正则表达式来查找字符串中的模式,不包括可能的前一个单词匹配
变量中有一个写入/文本字符串:Javascript正则表达式来查找字符串中的模式,不包括可能的前一个单词匹配,javascript,regex,Javascript,Regex,变量中有一个写入/文本字符串: 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
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");
}
var复制粘贴,已替换;
var verbdb=[“保持”、“了解”、“享受”];
var arrayLength=verbdb.length;
对于(变量i=0;i
我想从
replaced
变量中得到的是仅当first_name前面有单词let
时才排除
“名字让“对象”在晚上醒来的原因之一是诸如此类。试试这个,让名字知道并看到诸如此类的东西。记住,名字喜欢“对象”受到挑战,诸如此类。”
所以在这个例子中:
\u object\s
\u object\s
(?:\b)(?!let)(?=\w+\sfirst_name\s+(know|keep|enjoy))(\w+ \w+)\s+(\w+)
const regex=/(?:\b)(?!let)(?=\w+\sfirst\u name\s+(know | keep | level))(\w+\w+\s+(\w+)/g;
const str=`first_name总是在晚上醒来的原因之一就是诸如此类。试试这个,让你的名字知道,看看这些废话。记住,你的名字喜欢被挑战,诸如此类;
const subst=`$2_object_s`;
const result=str.replace(regex,subst);
控制台日志(结果)
您似乎不明白正则表达式中的[]
是什么意思。它不是用来分组的,这就是()
的用途。[^let]
匹配的单个字符不是l
、e
、或t
,它不排除字符串let
。您要查找的是一个反向查找,但是Javascript正则表达式没有这个功能。请参阅以了解一些解决方法。谢谢-我将查看该链接并了解更多信息,我得到了[]和(),但不可否认,这段代码片段让我不知所措,变得邋遢。哇,这很优雅且有效-好极了,我向你的掌握致敬。我将学习更多关于这一切意味着什么。非常感谢。