首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex模式来匹配一个基于前一个和下一个单词的单词?

Regex模式来匹配一个基于前一个和下一个单词的单词?
EN

Stack Overflow用户
提问于 2019-03-26 11:31:55
回答 2查看 102关注 0票数 0

我试图突出一个词的基础上,前和下一个词匹配的具体客户要求。

只有当前一个和下一个单词不以大写开头时,才能突出显示一个单词。

我已经创建了regex“(?!\bA\b)\sSouls+(?!\sA-Z,0-9)”,但它也用以大写开头的前一个单词突出显示"Souls“。

https://regex101.com/r/wPmijX/2

在这种情况下,“灵魂”旁边的“黑暗”不应突出显示,因为它开始的帽子。只有第二段中的“灵魂”应该突出显示。第三段中的事件“灵魂”不应突出为以大写字母开头的“游戏”。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-26 12:46:44

试试Regex:(?<=\b[a-z]\w+\b \b)Souls(?=\b [a-z]\w+\b)

演示

票数 0
EN

Stack Overflow用户

发布于 2019-03-26 12:08:24

如果匹配应该在两个单词之间,则可以使用两个捕获组。首先,捕获前面的单词,而不是以大写字符和以下空格开头。

然后在一个组中捕获Souls,并使用积极的前瞻性断言下面的内容是1+时间间隔,而不是以大写字符开头。

然后,您可以在替换中使用捕获的组。

代码语言:javascript
复制
\b([^\WA-Z]\w* +)(Souls)(?= +[^\WA-Z])

那就匹配了

  • \b字界
  • (开始捕获组
    • [^\WA-Z]\w* +匹配单词char但不匹配大写字符,0+匹配单词char,1+匹配空格

  • )闭捕获群
  • (Souls)捕获组中的Souls
  • (?=积极展望以断言后面的内容
    • +[^\WA-Z]匹配1+时,空格后面跟着单词字符,而不是大写字母。

  • )近景

Regex演示

代码语言:javascript
复制
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);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55356108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档