복붙노트

\ w와 \ b 정규식 메타 문자의 차이점

PHP

\ w와 \ b 정규식 메타 문자의 차이점

누구나 \ w와 \ b 정규 표현식 메타 문자의 차이점을 설명 할 수 있습니까?

이 두 메타 문자가 단어 경계에 사용된다는 것은 내 이해입니다. 이와 별도로, 어떤 메타 문자가 다중 언어 콘텐츠에 효율적입니까?

해결법

  1. ==============================

    1.메타 문자 \ b는 캐럿 (caret) 및 달러 기호와 같은 앵커입니다. "단어 경계"라고하는 위치에서 일치합니다. 이 일치는 길이가 0입니다.

    메타 문자 \ b는 캐럿 (caret) 및 달러 기호와 같은 앵커입니다. "단어 경계"라고하는 위치에서 일치합니다. 이 일치는 길이가 0입니다.

    단어 경계로 분류되는 세 가지 위치가 있습니다.

    간단히 말해서 : \ b는 \ bword \ b 형식의 정규식을 사용하여 "전체 단어 만"검색을 수행 할 수있게합니다. "단어 문자"는 단어를 구성하는 데 사용할 수있는 문자입니다. "단어 문자"가 아닌 모든 문자는 "단어가 아닌 문자"입니다.

    모든 맛에서 [a-zA-Z0-9_] 문자는 단어 문자입니다. 이들은 또한 짧은 문자 클래스 \ w와 일치합니다. 풍미 비교에서 단어 경계에 대해 "ascii"를 나타내는 기호는 단어 문자로만 인식합니다.

    \ w는 "단어 문자"를 나타내며 대개 [A-Za-z0-9_]를 나타냅니다. 밑줄과 숫자가 포함되어 있는지 확인하십시오.

    \ B는 \ b의 부정 버전입니다. \ B는 \ b가없는 모든 위치에서 일치합니다. 효과적으로 \ B는 두 단어 문자 사이의 모든 위치와 두 단어가 아닌 문자 사이의 모든 위치와 일치합니다.

    \ W는 \ w의 음수 버전 인 [^ \ w]의 줄임말입니다.

  2. ==============================

    2.\ w는 단어 문자와 일치합니다. \ b는 한쪽에 단어 문자가있는 위치 문자와 다른 문자 문자가 아닌 위치 문자와 일치하는 제로 너비 일치입니다. (단어 문자가 아닌 것들의 예는 공백, 문자열의 시작과 끝 부분 등을 포함한다)

    \ w는 단어 문자와 일치합니다. \ b는 한쪽에 단어 문자가있는 위치 문자와 다른 문자 문자가 아닌 위치 문자와 일치하는 제로 너비 일치입니다. (단어 문자가 아닌 것들의 예는 공백, 문자열의 시작과 끝 부분 등을 포함한다)

    \ w는 "abc def"의 a, b, c, d, e 및 f와 일치합니다. \ b는 "abc def"에서 a 앞에, c 뒤에, d 앞에 그리고 f 후에 (너비가 0 인) 위치와 일치합니다.

    참조 : http://www.regular-expressions.info/reference.html/

  3. ==============================

    3.@Mahender, 아마도 \ W (\ w 대신)와 \ b의 차이를 의미했을 것입니다. 그렇지 않다면 위의 @BoltClock과 @jwismar에 동의 할 것입니다. 그렇지 않으면 계속해서 읽으십시오.

    @Mahender, 아마도 \ W (\ w 대신)와 \ b의 차이를 의미했을 것입니다. 그렇지 않다면 위의 @BoltClock과 @jwismar에 동의 할 것입니다. 그렇지 않으면 계속해서 읽으십시오.

    \ W는 단어가 아닌 문자와 일치하므로 단어 경계를 일치시키는 데 사용하기 쉽습니다. 문제는 행의 시작 또는 끝과 일치하지 않는다는 것입니다. \ b는 단어 경계를 일치시키는 데 더 적합합니다. 단어 경계는 줄의 시작이나 끝과도 일치하기 때문입니다. 대략 말하면 (숙련 된 사용자가 나를 수정할 수 있습니다) \ b는 (\ W | ^ | $)로 생각할 수 있습니다. [편집 : @ Ωmega 아래 언급, \ b는 길이가 일치하므로 (\ W | ^ | $) 엄격하게 정확하지는 않지만 잘하면 diff를 설명하는 데 도움이]

    빠른 예 : 문자열 Hello World의 경우. + \ W는 Hello_ (공백으로)와 일치하지만 World와는 일치하지 않습니다. . \ b는 Hello와 World 모두와 일치합니다.

  4. ==============================

    4.

    \b <= this is a word boundary.
    

    단어 문자 다음에 단어 문자가 나오지 않거나 단어 문자 앞에 단어 문자가 오지 않는 위치에서 일치합니다.

    \w <= stands for "word character". 
    

    항상 ASCII 문자 [A-Za-z0-9_]와 일치합니다.

    특정 항목과 일치하는 항목이 있습니까?

    초보자를위한 또는 귀하의 식욕을 젖게하는 데 유용한 몇 가지 정규식 웹 사이트.

    나는 이것을 매우 유용한 책이라고 생각했다.

  5. ==============================

    5.\ w는 단어 경계가 아니며 [a-zA-Z0-9_] 밑줄을 포함하여 모든 단어 문자와 일치합니다. \ b는 단어 경계입니다. 즉, 단어와 영숫자가 아닌 문자 사이의 위치와 일치합니다 : \ W 또는 [^ \ w].

    \ w는 단어 경계가 아니며 [a-zA-Z0-9_] 밑줄을 포함하여 모든 단어 문자와 일치합니다. \ b는 단어 경계입니다. 즉, 단어와 영숫자가 아닌 문자 사이의 위치와 일치합니다 : \ W 또는 [^ \ w].

    이러한 구현은 언어마다 다를 수 있습니다.

  6. from https://stackoverflow.com/questions/11874234/difference-between-w-and-b-regular-expression-meta-characters by cc-by-sa and MIT license