我想说我想匹配字母E,Q和W.但是,如果他们在特定的字符串中找到它们,我就不希望它们匹配,例如,{{ 1}}。
HELLO
答案 0 :(得分:3)
你可以使用一个漂亮的正则表达技巧。这是JavaScript中的一些代码,但它可以适用于任何语言:
var str = 'LKNSDG8E94GO98SGIOWNGOUH09PIHELLOBN0D98HREINBMUE',
rgx = /HELLO|([EQW])/g,
match;
while ((match = rgx.exec(str)) != null) {
if (match[1]) output(match[1] + '\n');
}
function output(x) { document.getElementById('out').textContent += x; }

<pre id='out'></pre>
&#13;
基本上,你匹配HELLO|([EQW])
。由于正则表达式本质上是贪婪的,如果遇到HELLO
,它会立即与之匹配,从而跳过它内部的E
。
然后你可以检查捕获组。如果该捕获组中存在某些内容,我们就会知道它们是我们想要的东西。否则,它必须是HELLO
的一部分,所以我们忽略它。