2011-02-17 4 views
1

사람이이 정규식 패턴의 의미는 무엇입니까 '/ &w; /'

preg_replace('/&\w;/', '', $buf) 

가하는 일이 기능을 설명 할 수 있습니까? 다양한 자습서를 살펴본 결과 패턴을 '' 문자열로 바꿉니다. 그러나 나는 패턴 /&\w;/을 이해할 수 없다. 그것이 무엇을 나타내는가?

마찬가지로

preg_match_all("/(\b[\w+]+\b)/", $buf, $words) 

에 나는 "/(\b[\w+]+\b)/"가 나타내는 문자열을 무엇을하는지 이해할 수 없습니다.

도와주세요. 미리 감사드립니다 :)

+0

죄송합니다 @Codeur, @Gordon 당신이 올바른지를 이해하는 데 도움이 소프트웨어 도구를 사용할 수 있습니다. 나는 http://www.regular-expressions.info/의 아래에있는 추천서에 가입 할 것입니다. –

답변

1

정규식에서 \ w는 "단어"문자를 나타냅니다. 즉 : a-z, A-Z, 0-9 및 밑줄. \ b는 "단어 경계"를 나타내며 단어의 시작과 끝 (일련의 단어 문자)입니다.

따라서 /&\w;/은 & 기호 다음에 일련의 단어 문자가오고 그 뒤에.;가 붙는 정규 표현식입니다. 예를 들어 &foobar;이 일치하고 preg_replace가 빈 문자열로 바뀝니다.

동일한 방식으로 /(\b[\w+]+\b)/은 단어 경계와 일치하며 여러 단어 문자와 그 뒤에 다른 단어 경계가옵니다. 단어는 괄호를 사용하여 따로 캡처됩니다. 따라서이 정규 표현식은 문자열의 단어를 단순히 배열로 반환합니다.

+0

's/a series/a single /'두 번째 단락에. –

11

첫 번째 식의 설명은 간단하다, 그 것이다 :

&  # Match the character “&” literally 
\w # Match a single character that is a “word character” (letters, digits, and underscores) 
;  # Match the character “;” literally 

두 번째는 다음과 같습니다

(   # Match the regular expression below and capture its match into backreference number 1 
    \b   # Assert position at a word boundary 
    [\w+]  # Match a single character present in the list below 
        # A word character (letters, digits, and underscores) 
        # The character “+” 
     +   # Between one and unlimited times, as many times as possible, giving back as needed (greedy) 
    \b   # Assert position at a word boundary 
) 

preg_replace 기능은 정규 표현식을 사용한다. 정규식을 사용하면 텍스트의 패턴을 매우 강력한 방식으로 찾을 수 있습니다. 또는 preg_match과 같은 기능을 사용하려면 먼저 정규 표현식의 작동 방식을 먼저 살펴 보는 것이 좋습니다.

는이 사이트 http://www.regular-expressions.info/

에 많은 정보를 수집 할 수 있습니다 그리고 당신은 당신이 정규식 (같은 RegexBuddy)

관련 문제