\ w와 \ b 정규식 메타 문자의 차이점
PHP\ w와 \ b 정규식 메타 문자의 차이점
누구나 \ w와 \ b 정규 표현식 메타 문자의 차이점을 설명 할 수 있습니까?
이 두 메타 문자가 단어 경계에 사용된다는 것은 내 이해입니다. 이와 별도로, 어떤 메타 문자가 다중 언어 콘텐츠에 효율적입니까?
해결법
-
==============================
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.\ 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.@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.
\b <= this is a word boundary.
단어 문자 다음에 단어 문자가 나오지 않거나 단어 문자 앞에 단어 문자가 오지 않는 위치에서 일치합니다.
\w <= stands for "word character".
항상 ASCII 문자 [A-Za-z0-9_]와 일치합니다.
특정 항목과 일치하는 항목이 있습니까?
초보자를위한 또는 귀하의 식욕을 젖게하는 데 유용한 몇 가지 정규식 웹 사이트.
나는 이것을 매우 유용한 책이라고 생각했다.
-
==============================
5.\ w는 단어 경계가 아니며 [a-zA-Z0-9_] 밑줄을 포함하여 모든 단어 문자와 일치합니다. \ b는 단어 경계입니다. 즉, 단어와 영숫자가 아닌 문자 사이의 위치와 일치합니다 : \ W 또는 [^ \ w].
\ w는 단어 경계가 아니며 [a-zA-Z0-9_] 밑줄을 포함하여 모든 단어 문자와 일치합니다. \ b는 단어 경계입니다. 즉, 단어와 영숫자가 아닌 문자 사이의 위치와 일치합니다 : \ W 또는 [^ \ w].
이러한 구현은 언어마다 다를 수 있습니다.
from https://stackoverflow.com/questions/11874234/difference-between-w-and-b-regular-expression-meta-characters by cc-by-sa and MIT license
'PHP' 카테고리의 다른 글
PHP, jQuery 및 AJAX를 사용하여 여러 파일을 업로드하는 방법 (0) | 2018.09.20 |
---|---|
jQuery $ .ajax를 통해 JavaScript 배열을 PHP에 전달 (0) | 2018.09.20 |
PHP를 사용하여 디렉토리에있는 모든 폴더 하위 폴더와 파일 나열 (0) | 2018.09.20 |
MySQL 데이터베이스 테이블의 값을 웹 페이지의 HTML 테이블에 표시 (0) | 2018.09.20 |
정적 함수를 사용하여 foreach, array_map 및 lambda 및 array_map의 성능 (0) | 2018.09.20 |