2012-06-07 4 views
1

를 컴파일하지?PHP-정규식

편집 :

 
$ php --version 
PHP 5.3.2-1ubuntu4.15 with Suhosin-Patch (cli) (built: May 4 2012 00:38:52) 
Copyright (c) 1997-2009 The PHP Group 
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies 
+0

는 원래 (이스케이프)를 추가 할 수 귀하의 질문에 정규식? – buckley

+0

익명 기능을 사용하지 않으셨습니까? –

+2

@EdHeal 익명 함수의 문제점은 무엇입니까? – wroniasty

답변

1

당신은 탈출되어 ( :

결과 문자열은 다음과 같이 preg_replace_callback보기에 전달
/(?=(?<!\\)\$).(.+?)(?<!\\)\$/ 
       here: ^^^ 

:

php > $MATH_REGEX = '/(?=(?<!\\)\$).(.+?)(?<!\\)\$/'; 
php > echo $MATH_REGEX; 
/(?=(?<!\)\$).(.+?)(?<!\)\$/ 
         ^^ !!! 
+0

아. 이것은 고전적인 실수입니다. 그래서 분명히 백 슬래시는 이스케이프 될 필요가 있습니다. 작은 따옴표로 묶인 문자열입니다. –

+0

PHP에서 regexps를 작성하는 것은 이와 같은 오류의 끝없는 소스입니다. Perl/Python은 훨씬 더 좋은 방법으로 해결했습니다. – wroniasty