私は次の文字列を持っています
str = '"Apples" AND "Bananas" OR Gala Me'
最後に「GalaMe」ビットを取得したい。「AND」、「OR」、または引用符で囲まれた単語は、トークンと見なすことができます。私はこの正規表現を持っています。
regex = /AND|OR|"[^"]+"/g
すべてのトークンに一致しますが、この正規表現の反対を取得して、一致しないサブ文字列を取得するにはどうすればよいですか?
私は次の文字列を持っています
str = '"Apples" AND "Bananas" OR Gala Me'
最後に「GalaMe」ビットを取得したい。「AND」、「OR」、または引用符で囲まれた単語は、トークンと見なすことができます。私はこの正規表現を持っています。
regex = /AND|OR|"[^"]+"/g
すべてのトークンに一致しますが、この正規表現の反対を取得して、一致しないサブ文字列を取得するにはどうすればよいですか?
split()
トークンを使用して文字列を作成できます。
var parts = str.split(/\s*(?:AND|OR|"[^"]+")\s*/)
// ["", "", "", "", "Gala Me"]
オプションで、長さでフィルタリングできます。
var parts = str.split(/\s*(?:AND|OR|"[^"]+")\s*/).filter(function(s) {
return s.length > 0;
});
// ["Gala Me"]
その後、最後の要素を選択します(該当する場合)。
if (parts.length) {
console.log(parts.pop());
}
// "Gala Me"
最後の「AND」または「OR」の後のすべてに一致する正規表現
.*(?:AND|OR)(.*)$
------------
|
|->matches greedily until the last AND or OR
グループ1は、必要な文字列をキャプチャします。