gpt4 book ai didi

javascript - 在字符串内匹配,但忽略括号之间的匹配 - 正则表达式和 JavaScript

转载 作者:行者123 更新时间:2023-11-30 15:16:20 26 4
gpt4 key购买 nike

我有以下字符串示例:

 "1. go [south], but look out for the trout pouting [lout]"
"2. go [south], but be wary of the pouting [lout]"
"3. go [south], but be wary of the sullen-looking [lout]"

如果查询词 out 出现在每个字符串中,我希望它匹配,但如果它在括号之间则被忽略。所以我要匹配:

  1. True outtrout 噘嘴
  2. True 噘嘴
  3. 错误

我已经设法得到这个表达式:

/[^\(\)\[\]]out\s(?![\]])/ig

但是,它只匹配 outtrout 的第一个字符串。

我发现空白字符是这里不匹配 pouting 的影响因素,但去掉它也匹配括号内的所有内容。

正确的正则表达式是什么?

最佳答案

假设 [...] 是平衡的且未转义的,您可以使用基于否定前瞻的搜索:

/out(?![^\[\]]*\])/

(?![^\[\]]*\]) 是一个否定前瞻,断言我们没有 ] 跟随非 [ 和非 ] 前面的字符,从而确保我们不会在 [...] 中匹配 out

用于构建正则表达式的 Javascript 代码:

search = "out";
var regex = new RexExp(search + "(?![^\\[\\]]*\\])", "g");

RegEx Demo

关于javascript - 在字符串内匹配,但忽略括号之间的匹配 - 正则表达式和 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44411377/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com