我试图突出一个词的基础上,前和下一个词匹配的具体客户要求。
只有当前一个和下一个单词不以大写开头时,才能突出显示一个单词。
我已经创建了regex“(?!\bA\b)\sSouls+(?!\sA-Z,0-9)”,但它也用以大写开头的前一个单词突出显示"Souls“。
https://regex101.com/r/wPmijX/2
在这种情况下,“灵魂”旁边的“黑暗”不应突出显示,因为它开始的帽子。只有第二段中的“灵魂”应该突出显示。第三段中的事件“灵魂”不应突出为以大写字母开头的“游戏”。
发布于 2019-03-26 12:46:44
试试Regex:(?<=\b[a-z]\w+\b \b)Souls(?=\b [a-z]\w+\b)
发布于 2019-03-26 12:08:24
如果匹配应该在两个单词之间,则可以使用两个捕获组。首先,捕获前面的单词,而不是以大写字符和以下空格开头。
然后在一个组中捕获Souls,并使用积极的前瞻性断言下面的内容是1+时间间隔,而不是以大写字符开头。
然后,您可以在替换中使用捕获的组。
\b([^\WA-Z]\w* +)(Souls)(?= +[^\WA-Z])那就匹配了
\b字界(开始捕获组[^\WA-Z]\w* +匹配单词char但不匹配大写字符,0+匹配单词char,1+匹配空格
)闭捕获群(Souls)捕获组中的Souls(?=积极展望以断言后面的内容+[^\WA-Z]匹配1+时,空格后面跟着单词字符,而不是大写字母。
)近景
const regex = /\b([^\WA-Z]\w* +)(Souls)(?= +[^\WA-Z])/gm;
const str = `When I finally finished Dark Souls for the first time, that feeling of struggle and triumph, of having wandered a vast and lonesome landscape, stuck with me for weeks.
The creator of the Souls series and game director on Sekiro: Shadows Die Twice.
The Souls Game start with competent price.`;
const subst = `$1<strong>$2</strong>`;
const result = str.replace(regex, subst);
document.write(result);
https://stackoverflow.com/questions/55356108
复制相似问题