2

私は次の文字列を持っています

str = '"Apples" AND "Bananas" OR Gala Me'

最後に「GalaMe」ビットを取得したい。「AND」、「OR」、または引用符で囲まれた単語は、トークンと見なすことができます。私はこの正規表現を持っています。

regex = /AND|OR|"[^"]+"/g

すべてのトークンに一致しますが、この正規表現の反対を取得して、一致しないサブ文字列を取得するにはどうすればよいですか?

4

2 に答える 2

4

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"
于 2013-02-13T16:46:24.663 に答える
0

最後の「AND」または「OR」の後のすべてに一致する正規表現

.*(?:AND|OR)(.*)$
------------
 |
 |->matches greedily until the last AND or OR

グループ1は、必要な文字列をキャプチャします。

于 2013-02-13T16:48:47.353 に答える