2011-01-26 3 views
2

누구든지이 정규식에 어떤 문제가 있다고 말할 수 있습니까?PHP 정규식 문제

preg_match("/\+?)\)(=.+?,.+?)?\](.+?)\[\/quote\](?!((.*?)\[\/quote\]))/s", $text, $match, null, $start); 

그것은 (내가 포럼에서 찾았습니다)가 작동해야하지만 오류가 발생합니다 : 경고 :는 preg_match() [function.preg 경기] : 컴파일 실패 :에서 타의 추종을 불허하는 괄호 오프셋 3

나는 parantheses에 대해 뭔가 잘못되었다고 추측하고 있습니까? 사전에

감사합니다, 피셔

+1

이 정규식은 확실히 깨졌습니다. 원하는 결과와 regex와 일치하는 문자열을 지정하면 의미있는 응답을 제공 할 수 있습니다. –

답변

4

"/\+?) - )은 타의 추종을 불허입니다. 당신은 그 앞에 어딘가에 여는 빤을 두거나 그걸 없앨 필요가 있습니다. 그것이 무엇이든 최선을 다할 것인지 확실치 않습니다.

+0

내가 뭘 하려는지, som 데이터를 다음에서 추출하는 것입니다 : [quote = quote-userName (32)] quote text [/ quote] ... 나는 현재 데이터를 얻고 싶습니다 : "quote-userName (32) "및"quote text "추출! – fischer

2

+ 탈출 물음표가, 타의 추종을 불허 후 표현의 세 번째 문자로 발생하는, 당신에게 먼저 해당)을 말하고있다. 누락 된 부분 (표현의 시작 부분 또는이 부분)이 \로 이스케이프되어야합니다.

1

누락 된 백 슬래시 첫 번째 닫는 괄호를 제거

123 
"/\+?)\)(=.+?,.+?)?\](.+?)\[\/quote\](?!((.*?)\[\/quote\]))/s" 
    ^--- here 
"/\+?\)\)(=.+?,.+?)?\](.+?)\[\/quote\](?!((.*?)\[\/quote\]))/s" 
2

보십시오 :이 같은

\+?\)(=.+?,.+?)?\](.+?)\[\/quote\](?!((.*?)\[\/quote\])) 

아니면 탈출 :

\+?\)\)(=.+?,.+?)?\](.+?)\[\/quote\](?!((.*?)\[\/quote\]))