2013-02-13 3 views
2

У меня есть следующая строкаКак получить последние буквы из строки?

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

Я хочу, чтобы получить немного в «Gala Me» в конце. Слова «И», «ИЛИ» или что-либо между кавычками можно считать токеном. У меня это регулярное выражение.

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

Он соответствует всем моей лексеме, но как я мог получить противоположное этому регулярное выражение, чтобы получить непревзойденную подстроку?

+0

что об использовании^(не) –

+2

Ват? Какова ваша конечная цель? –

+0

- регулярное выражение, которое соответствует чему-либо после последнего «И» или «О» – spinners

ответ

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" 
+0

самое приятное решение, kudos – spinners

+0

И один лайнер: 'var last = str.split (/ \ s * (?: AND | OR |" [^ "] +") \ s * /). Pop(); ' – iambriansreed

0

regular exp ression что соответствует ничего после того, как последний 'И' или 'ИЛИ'

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

Группа 1 захватывает вашу требуемую строку ..

+0

Должно ли это быть'. * AND | OR (. *) $ '? – iambriansreed

+0

@iambriansreed, которое соответствовало бы чему-либо ** до ** И или что ** начинается ** с OR – Anirudha

+0

, это не работает – spinners

Смежные вопросы