首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带复合字符串的Regex负查找和负前瞻

带复合字符串的Regex负查找和负前瞻
EN

Stack Overflow用户
提问于 2021-06-25 11:59:10
回答 2查看 56关注 0票数 1

我有一个成分清单,我需要突出它的过敏原。然而,也有一些例外需要被忽略。我的regex并不是忽略复合字符串(包含多个单词的字符串与空格隔开,例如,杏仁牛奶)。

在这个例子中,我想强调蛋类RICE。然而,我想忽略米乳和大蒜黄油,如下所示。

牛肉Eggs(76%)(beef,干酪、米乳、猪肉、牛奶)、调味料(8%)(芝麻、罗勒、鸡蛋、迷迭香、龙蒿、美味黄油、马约拉姆、牛至和米海湾叶)、普罗旺斯酱水(16%)(普罗旺斯酱、芹菜、鸡汤、黄油E 219、大麦、卢平、大蒜黄油和柠檬汁)

我在regex 101 => 示例上的代码

代码语言:javascript
复制
(?<!rice milk|garlic butter)(?<=milk|eggs|butter|rice)|(?!rice milk|garlic butter)(?=milk|eggs|butter|rice)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-06-25 12:12:45

我建议采用不同的方法,将regex逻辑按每个单词拆分:

代码语言:javascript
复制
(?:(?<!rice )milk|(?<!garlic )butter|eggs|rice(?! milk))

解释:

(?:..) -非捕获群

(?<!rice )milk -匹配milk,但成功的不是rice (排除rice milk) -其他正则表达式部分也遵循相同的方法。

| -交替算子

Regex演示

票数 1
EN

Stack Overflow用户

发布于 2021-06-25 12:16:47

您可以匹配您不想要的内容,在本例中是rice milkgarlic butter,并使用替换|使用您想要的捕获组

代码语言:javascript
复制
\b(?:rice milk|garlic butter)\b|\b(milk|eggs|rice|butter)\b

组1的值在regex演示中以绿色高亮显示。

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

https://stackoverflow.com/questions/68130637

复制
相关文章

相似问题

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