2012-01-15 3 views
0

주어진 문자열을 토큰 화하기 위해 정규 표현식을 사용하고 싶습니다. 패턴은 "<"까지의 문자 (줄 바꿈 등), 0 번 이상 공백, "%"다음에 오는 문자입니다. 시도했습니다.Javascript RegExp Tokenizing

그러나 원하는 결과가 나오지 않습니다. 패턴과 함께 설명을 해주시면 감사하겠습니다.

+0

토큰 구분 기호로 사용하고자하는 것은 무엇입니까? 그렇게하면 정규식을 제공 할 수 있습니다. –

+1

'str.split (/ <\ s * % \)'이 (가) 작동하지 않습니까? 몇 가지 예와 원하는 결과를 제공하십시오. – Qtax

+0

예제 입력 및 출력을 제공하십시오. – Diode

답변

0

사용이 :

"some string".split(/.*<\s*%/); 
+0

작동하지 않습니다. "스팸 쇠고기 <% 스팸 및 쇠고기 %> 스팸 쇠고기"를 직접 사용해보십시오 .split (/ (.) * <(\ s) * % /); 이것은 제가 사용했던 패턴입니다. 이것은 분명히 올바르지 않습니다. – MrIzik

+0

콘솔에서 테스트 해보니 작동 중입니다. "this-is + a_test".split (/ [\ - \ + _] /) == [ "this", "is", "a", "test"] ', 만약 당신이 기대 한대로 작동하지 않는다면 정규 표현식이 문제가되어야합니다. –

+0

패턴이 잘못되었음을 알고 있습니다. 그게 내가 단어로 성취하려고 노력하고있는 것을 게시 한 이유이다. 도움을 주셔서 감사합니다. – MrIzik

0
/^[\s\S]*?< *%/ 

당신이 원하는 것을해야한다.

^은 문자열의 시작 부분에서 일치시킵니다.

[\s\S]은 모든 문자와 일치합니다. 문자 그대로, 공백 문자 또는 비 공백 문자를 의미하며, .은 개행 문자와 일치하지 않습니다.

*?은 나머지 패턴이 일치하는 데 필요한 0 이상이지만 가장 적은 수와 일치합니다.

< 리터럴 '< '

* (참고 공간)과 일치 제로 이상의 공백 일치한다. [ ]*이라고 쓰면 더 읽기 쉽습니다.

% 마지막으로 해당 문자와 ​​일치합니다.

문자열 전체 (즉, %이 문자열의 마지막 문자 여야 함)와 일치 시키려면 $을 마지막으로 / 앞에 넣을 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 예를 들어''spam 쇠고기 <% more spam and beef %> spam 쇠고기 ''.split (/^[^ <* * *//); 결과는''스팸 쇠고기''인가 아니면 뭔가 빠졌는가? – MrIzik

+0

귀하의 가정은 약간 잘못되었습니다.''< "와 일치 할 때까지 공백 (있는 경우)과 마지막으로" "%"'까지만 문자열을 원합니다. 예를 들어, " 스팸 쇠고기".split (/^[^ <* * */*), – MrIzik

+0

@MrIzik, 나는 비 탐욕심 시합. –