我有以下字符串
str = '"Apples" AND "Bananas" OR Gala Me'
我希望最后得到'Gala Me'位。单词“AND”,“OR”或引号之间的任何内容都可以视为令牌。我有这个正则表达式。
regex = /AND|OR|"[^"]+"/g
它匹配我的所有令牌,但是我怎么能得到这个正则表达式的反面来获得不匹配的子串呢?
答案 0 :(得分: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"
答案 1 :(得分:0)
正则表达式,匹配最后一个'AND'或'OR'
之后的任何内容
.*(?:AND|OR)(.*)$
------------
|
|->matches greedily until the last AND or OR
第1组捕获您所需的字符串..