我有以下字符串示例:
"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 匹配,如果它出现在每个字符串中,但如果它在括号之间,则会被忽略。所以我想要匹配:
我设法得到了这个表达式:
/[^\(\)\[\]]out\s(?![\]])/ig
但是,它只匹配 out 和 trout 的第一个字符串。
我已经发现空白字符是影响因素,因为它不匹配 pouting ,但摆脱它也会匹配括号之间的所有内容。
这个正确的正则表达式是什么?
答案 0 :(得分:1)
假设[...]
是平衡的且没有转义,您可以使用基于前瞻性的负面搜索:
/out(?![^\[\]]*\])/
(?![^\[\]]*\])
是一个负面的预测,声称我们前面没有]
非[
和非]
字符因此确保我们不匹配out
内的[...]
。
用于构建正则表达式的Javascript代码:
search = "out";
var regex = new RexExp(search + "(?![^\\[\\]]*\\])", "g");