2

我有以下字符串

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

我想在最后得到“Gala Me”。单词“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 回答