2013-10-22 1 views
-3

나는 여기에 비슷한 질문을 보았습니다. 그러나 나는 이것들을 도왔다 고 생각하지 않습니다.PHP : ereg에서 변환 된 preg_match의 문제점

이전 버전의 PHP 및 특히 ereg 기능을 사용하는 사람으로부터 사이트를 상속 받았습니다. 원래 등록 된 전이었다 :

$regex = "[ ]+[0-9]+) ([a-zA-Z]+)[ ]+Crimson[ ]+([0-9]+)[ ]+[0-9]+[ ]+[0-9]+[ ]+[0-9]+[ ]+([0-9]+)[ ]+[0-9]+"; 

난 당신이 시작하고 구분 기호로 종료 할 필요가 읽었습니다, 그래서 난에 업데이트했습니다

$regex = "/[ ]+[0-9]+) ( [a-zA-Z]+)[ ]+Crimson[ ]+([0-9]+)[ ]+[0-9]+[ ]+[0-9]+[ ]+[0-9]+[ ]+([0-9]+)[ ]+[0-9]+/"; 

그러나 나는 여전히이 오류를 얻고있다 :

Warning: preg_match(): Compilation failed: unmatched parentheses at offset 10

표현식에 특수 문자가 표시되지 않으므로 다른 항목에서 벗어날 필요가 있는지 확신 할 수 없습니다. 어떤 아이디어?

+3

[0-9 +)''최초의 후 닫는 대괄호있다 - 하나를 열어 일치가 없습니다. – andrewsi

+0

어디 보자 ... ** 일치하지 않는 괄호 ** ... 표현식의 첫 번째 괄호 (오프셋 10에있는 첫 번째 괄호)는 여는 대신 * 닫기 *입니다 ... hmmm .... – Jon

+0

반복 연산자 '[0-9]'를 복사하여 붙여 넣는 대신. –

답변

2

)은 정규 표현식의 시작 부분 근처에 있지만 사용자가 열지 않았습니다. 리터럴 인 경우 앞에 백 슬래시를 추가하십시오.

/[ ]+[0-9]+) 

/[ ]+[0-9]+\) 

그렇지 않은 경우

에 먼저 엽니 다.

+0

그게 다야.) 사실은 문자 그대로라고 생각했기 때문에 나는 그것을 벗어났다. 이것을 지적 해 주셔서 대단히 감사합니다. 그것은 명확히 내가 4 시간을 찾고, 매우 마지막 순간에만 발견하는 그것들 중의 하나가 될 것이다! – Nick

1

위치 10에서 당신은 개방하지 않고)를 폐쇄을 (