2011-03-15 5 views
0

php와 reg exp를 사용하여 텍스트에서 "C#"문자열을 찾으려고합니다.유니 코드에서 정규 표현식이 실패합니다.

나는

\bc\x{0023}\b 

을 사용하고 그러나 전혀 작동하지 않습니다.

\bc\x{0023} 

작동하지만 그 날

모든 단서에 대한 해결책이 아니다?

+0

유니 코드 작동하지만 그것은 # 실패했습니다 것을 깨달았다 전에 나는이 표현을 사용하고 있었다 유니 코드 나던 –

답변

3

이스케이프 시퀀스 \b은 단어 경계를 의미하기 때문입니다. Word는 PHP 매뉴얼에 따라 다음과 같이 정의됩니다. ""단어 "문자는 임의의 문자 또는 숫자 또는 밑줄 문자, 즉 Perl"단어 "의 일부가 될 수있는 문자입니다".

단어 경계는 단어와 단어 사이의 경계를 의미합니다. 즉, 단어 문자와 문자 사이의 a는 단어 문자가 아닙니다. 문제는 #이 단어 문자가 아닙니다. 따라서 # 다음에 단어 문자가 오지 않는 한 #\b은 절대로 일치하지 않습니다.

아마도 캐릭터 클래스를 사용하여보다 명확하게 정의해야합니다. 예를 /\bc#(?![a-z])/i를 들어 (즉, C의 AZ의 문자 범위가 따르지 #)

+0

후 \ b를, 나는 \ 예를 들어 사용 bjava \ b 자바, 자바 및 자바 있지만 javabean 찾을 수 –

+0

미안해, 귀하의 솔루션을 잘못 읽었습니다, 그것은 잘 작동합니다. –

관련 문제