2013-02-13 2 views
2

나는 다음과 같은 문자열 내가 마지막에 '갈라 나'비트를 얻으려면문자열에서 마지막 문자를 가져 오는 방법은 무엇입니까?

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

있습니다. 'AND', 'OR'또는 따옴표 사이의 모든 단어는 토큰으로 간주 될 수 있습니다. 나는이 정규 표현식을 가지고있다.

내 모든 토큰과 일치하지만 어떻게이 정규식의 반대쪽에서 타의 추종을 불허하는 부분 문자열을 얻을 수 있습니까?

+0

무엇^(안) –

+2

와트를 사용하는 방법에 대한? 당신의 궁극적 인 목표는 무엇입니까? 마지막으로 'AND'후 모든 항목과 일치 –

+0

정규 표현식 또는 'OR' – 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

가장 만족스러운 솔루션, – spinners

+0

그리고 하나 라이너 명예 :'var에 마지막으로 = str.split (| OR |/\ S * (? AND을 "[^"] + ") \가/* S) 팝업(); ' – iambriansreed

0

정규식 마지막으로 'AND'후 모든 항목과 일치 ression 또는 'OR'그룹 1이 필요한 문자열을 캡처

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

..

+0

이는'이어야한다 * AND |. 또는 아무것도 ** 개까지 ** AND 또는 일치 것 (*.) $' – iambriansreed

+0

@iambriansreed **와 ** 시작 또는 – Anirudha

+0

이 잘 – spinners

관련 문제