2011-08-01 3 views
0

나는이 형식자바 스크립트 문자열 구문 분석

[something](something something) [something](something something)

에서 문자열을 구문 분석하려고 내가 괄호 세트 사이에없는 모든 공간에 헤어지고 싶어?

js string.split을 정규식 /[^\(].*\s+.*[^\)]/g으로 사용해 보았지만 작동하지 않습니까? 모든 제안은 감사하겠습니다 :-)

편집 : 나는 의견을 남기고 싶기 때문에 답변으로 게시하고 싶지는 않지만 결국 해결책을 찾았습니다.

var a = "the>[the](the the) the>[the](the the) the" 
var regex = /\s+(?!\w+[\)])/ 
var b = a.split(regex) 
alert(b.join("+++")) 
+2

는 중첩 될 괄호 수 있습니까? – SLaks

+2

(mis)? jwz에서 인용 : "많은 사람들이 문제에 직면했을 때 '알고 있습니다! 정규 표현식을 사용합니다!'라고 생각합니다. 이제는 두 가지 문제가 있습니다. " – riwalk

+0

그 (것)들을 중첩 할 필요가 없을 것입니다, 그 (것)들은 보통 공백을 포함 할 끈을 방지하기 위하여 거기, 빈둥 거릴 때 공간을 지킨다 – rubixibuc

답변

2

입력 내용이 항상 일관됩니까? 그렇다면 문자열을 쉽게 나눌 수 있습니다. ') ['

그렇지 않은 경우 [) 사이의 값을 가져올 수 있습니까? 아니면 어떤 종류의 중첩이 있습니까?

+0

제어 된 예제 일뿐입니다. 항상 같지 않습니다. – rubixibuc

+0

괄호 사이에 있지 않으면 특정 영역을 깰 수 있어야합니다. – rubixibuc

+0

@rubixibuc 수 있습니다 또한 SLaks 질문에 대답합니까? – gnur

1

작업에 잘못된 도구를 사용하고 있습니다.

this famous post에서 언급했듯이 정규 표현식은 비정규 언어를 구문 분석 할 수 없으며 "균형 괄호"문제는 일반 언어로 설명 될 수 없습니다.

대신 파서 작성을 시도해 보셨습니까?

편집 :

당신이 마지막으로 중첩이 요구 아님을 명확히 한 것으로 보인다. 이 경우, 그누의 해결책을 제안 할 것입니다.

+0

물론이 경우에는 매우 가능합니다 규칙이 잘 알려진 경우 정규 표현식을 사용하십시오. – gnur

+0

따옴표 같은 다른 기호는 따옴표 사이에있는 것을 제외하고는 모두 분리 될 수 있습니까, 아니면 같은 것입니까? – rubixibuc

+0

@gnur, 그게 문제의 핵심입니다. 중첩 괄호가 허용되는지 여부는 알 수 없습니다. 중첩 된 괄호가 허용되지 않으면, 그것을 위해 가십시오.만약 중첩 된 괄호 *가 허용된다면, 신성하지 않은 아이는 처녀의 피를 흘릴 것이고, 러시아 해커들은 그의 웹 애플리케이션을 사용할 것입니다. – riwalk

0
당신이 질문을 정확하게

이 정규식 할 것, 아무것도 더 :

'[x](x x) [x](x x)'.split(/ +(?![^\(]*\))/);