2014-05-09 2 views
0

이미 여러 번 나타나는 질문처럼 들리지만 JavaScript에 대한 대답을 찾을 수 없습니다. 그것은 문자열의 일부 문자와 문자 중 하나를 포함하지 않는 다른 시퀀스와 일치문자 시퀀스와 문자 시퀀스가 ​​일치하지 않는 문자 시퀀스

/("|,|\n|[^",\n]+)/ 

:

는 흐르는 정규식을 고려하십시오. asd"asd,asd\nasd, ", asd, ,, asd, \n과 일치합니다.

비슷한 방법이지만 문자열을 사용하는 것을 찾고 있습니다.

The constructor is good or bad? The man & the lord are good.

이 일치합니다 :

일치 '또는'와 '&'와없는 '또는'모든과 '&'

는 더 도움이 예제를 제공합니다 :

The construct, or, is good, or,,, &, the l, or,

또는 [] 사이의 일치와 d are good. ("AB"와 같은 문자 시퀀스에 의해 분리되는 스트링 세트를 포함하는 문자열 등 그

`[The construct][or][ is good ][or][ bad? The man ][&][ the l][or][d are good.]` 

생각해). 그런 다음 각 문자열은 다른 시퀀스 ("cd")로 구분 된 일련의 다른 문자열을 나타냅니다. 큰 문자열에서 구분자 인 모든 문자 시퀀스 ("ab", "cd")와 그렇지 않은 모든 문자 시퀀스를 일치시키고 싶습니다.

+1

당신이 단어를 사용하여 예상 출력의 논리를 설명 할 수 있습니까? 여기에 따라야 할 규칙은 무엇입니까? – janos

+0

** _something_ (문자열) **은 ** _something else_ (다른 문자열)이 아니고 _something else_와 일치하고 싶습니다. – razvanz

+0

문자열을 포함하지 않는 문자열과 일치 시키려면 ...? –

답변

0

우선, or에있는 문자열을 Lord에 입력했다고 가정합니다. 그렇지 않다면 알려주세요. 일반적인 기법이 그대로 유지되므로 조정 해 드리겠습니다.

PHP가 그렇듯이 js에는 문자열을 분할하고 구분 기호를 유지할 수있는 옵션이 없기 때문에 흥미로운 질문입니다.

그러나이를 수행하는 간단한 방법이 있습니다.

첫 번째 단계 : 서라운드 나중에 문자열을 분할하는 데 사용할 특이한 텍스트 블록 or 또는 &의 모든 인스턴스. 이것을위한 정규 표현식은 ... 드럼 롤 ...(or|&)

JS 코드는 splitReady = str.replace(/(or|&)/mg, "[SPLIT]$1[SPLIT]");

같은 것입니다 출력 : The construct[SPLIT]or[SPLIT] is good [SPLIT]or[SPLIT] bad? The man [SPLIT]&[SPLIT] the l[SPLIT]or[SPLIT]d are good.

두 번째 단계 : 공백 월 (이것은 우리를 제공 각 [SPLIT]

result = splitReady.split(/\[SPLIT\]/m);

에서 문자열을 분할 사이트의 마크 업에 올바르게 표시되지 않음) :

The construct, or, is good, or, bad? The man, &, the l, or, d are good.

+0

이것은 일반적으로 작업을 수행합니다. 하나의 단계에서 이것을하는 것을 찾고 있습니다. 가능한지 모르겠다. 그래서 내가 묻는거야. 그것이 가능하다면 나는 이미 그것을 사용하기를 원할 것이다. 왜냐하면 나는 이미 그것이 함수에서 호출되었다고 쓴 함수를 가지고 있기 때문이다. 아무 것도 나오지 않으면이 예제를 2 가지로 보아도이 예제를 고려할 것입니다. 1 - SPLIT가 이미 문자열에 있으면 모든 것이 미쳐 가고 2 - 큰 문자열 (내 경우)의 성능에 영향을 미칩니다. – razvanz

+0

@razvan '[S @ P @ L @ I @ T]와 같은 독특한 것을 선택하면 위험하지 않습니다. :) js는 lookbehinds를 지원하지 않기 때문에 javascript에서 태스크를 수행 할 수있는 훌륭한 솔루션입니다. 보통 '&'및'or'를 구분하기 위해 미리보기와 결합합니다. '(? = or) | (? = &)'를 사용하여'또는'앞에 나눌 수 있지만 두 번째 분할을 위해'또는'다음에 자신을 위치시킬 수는 없습니다. js는 lookbehind를 지원하지 않습니다. 죄송합니다. 대체 XRegRxp 라이브러리까지도 지원합니다. – zx81

+0

JavaScript에서 RegExp를 사용하여 수행 할 방법이 없습니까? – razvanz