정규 표현식에 대한 책을 읽고 있는데 다음 예제를 보았습니다 \b
.
고양이는 방 전체에 음식을 뿌렸다.
정규식 사용- \bcat\b
단어는 일치 cat
하지만 cat
in 은 일치 하지 않습니다 scattered
.
들어 \B
저자 다음 예제를 사용합니다 :
9 자리 ID를 그대로 입력하세요.
색상으로 구분 된 패스 키에 표시됩니다.
단어 사이에 정규식 \B-\B
일치 -
를 사용합니다 color - coded
. \b-\b
반면에를 사용 하면 -
in nine-digit
및 pass-key
.
우리 \b
가 분리 하기 위해 사용하는 첫 번째 예 cat
와 \B
분리 하기 위해 두 번째 사용 하는 이유는 -
무엇입니까? \b
두 번째 예제에서 사용하면 이전에 수행 한 것과 반대입니다.
저에게 차이점을 설명 해주세요.
편집 : 또한 누구든지 새로운 예를 들어 설명해 주시겠습니까?
답변
혼란은 당신의 생각이 \b
공백과 일치하기 때문에 발생합니다 (아마 “b”는 “공백”을 의미하기 때문일 것입니다).
\b
단어 의 시작 또는 끝에 있는 빈 문자열과 일치합니다 . \B
단어의 시작이나 끝이 아닌 빈 문자열과 일치합니다. 여기서 핵심은 “-“가 단어의 일부가 아니라는 것입니다. 의 양쪽에 단어 경계가 있기 때문에 <left>-<right>
일치 \b-\b
합니다 -
. 반면에 <left> - <right>
(공백에 유의하십시오) 대시의 양쪽에 단어 경계가 없습니다. 단어 경계는 왼쪽과 오른쪽에 한 칸 더 있습니다.
반면에 \bcat\b
단어 경계를 검색 할 때보다 직관적으로 동작하고 예상대로 “cat”과 일치합니다.
답변
\b
너비가 0 인 단어 경계입니다. 구체적으로 특별히:
단어 문자 (\ w와 일치하는 모든 항목)와 비 단어 문자 ([^ \ w] 또는 \ W와 일치하는 항목) 사이의 위치 및 첫 번째 문자열 인 경우 문자열의 시작 및 / 또는 끝에서 일치합니다. 및 / 또는 문자열의 마지막 문자는 단어 문자입니다.
예 : .\b
일치 c
의abc
\B
너비가 0 인 단어가 아닌 경계입니다. 구체적으로 특별히:
두 단어 문자 사이의 위치 (예 : \ w \ w 사이의 위치)와 두 단어가 아닌 문자 사이의 위치 (예 : \ W \ W)에서 일치합니다.
예 : \B.\B
일치 b
의abc
더 좋은 정규식 정보는 regular-expressions.info 를 참조하십시오.
답변
다른 예 :
검색 할 문자열과 패턴이 ‘cat’인 것을 고려하십시오.
text = "catmania thiscat thiscatmaina";
이제 정의,
‘\ b’ 는 각 단어의 시작 또는 끝에서 패턴을 찾고 일치시킵니다.
‘\ B’ 는 각 단어의 시작 또는 끝에서 패턴을 찾거나 일치하지 않습니다.
다른 경우 :
사례 1 : 각 단어의 시작 부분
result = text.replace(/\bcat/g, "ct");
이제 결과는 “ctmania thiscat thiscatmaina”입니다.
사례 2 : 각 단어의 끝
result = text.replace(/cat\b/g, "ct");
이제 결과는 “catmania thisct thiscatmaina”입니다.
사례 3 : 처음에는 아님
result = text.replace(/\Bcat/g, "ct");
이제 결과는 “catmania thisct thisctmaina”입니다.
사례 4 : 끝이 아님
result = text.replace(/cat\B/g, "ct");
이제 결과는 “ctmania thiscat thisctmaina”입니다.
사례 5 : 시작도 끝도 아님
result = text.replace(/\Bcat\B/g, "ct");
이제 결과는 “catmania thiscat thisctmaina”입니다.
도움이 되었기를 바랍니다 🙂
답변
메타 문자 \ b는 캐럿 및 달러 기호와 같은 앵커입니다. “단어 경계”라고하는 위치에서 일치합니다. 이 일치는 길이가 0입니다.
단어 경계에 해당하는 세 가지 위치가 있습니다.
- 첫 번째 문자가 단어 문자 인 경우 문자열의 첫 번째 문자 앞.
- 문자열의 마지막 문자 뒤, 마지막 문자가 단어 문자 인 경우.
- 하나는 단어 문자이고 다른 하나는 단어 문자가 아닌 문자열의 두 문자 사이.
\ B는 \ b의 부정 된 버전입니다 . \ B는 \ b가 아닌 모든 위치에서 일치합니다. 사실상 \ B는 두 단어 문자 사이의 모든 위치와 두 단어가 아닌 문자 사이의 모든 위치에서 일치합니다.
출처 : http://www.regular-expressions.info/wordboundaries.html
답변
\b
단어 경계와 일치합니다. \B
비 단어 경계와 일치하며 ( 수정 을 위해 @Alan Moore 에게 감사드립니다 !)와 동일 합니다. 둘 다 너비 가 0입니다.[^\b]
(?!\b)
자세한 내용은 http://www.regular-expressions.info/wordboundaries.html 을 참조하십시오. 이 사이트는 많은 기본 정규식 질문에 매우 유용합니다.
답변
다음과 같은 문자열을 사용하십시오.
XIX IXI XX XI II IIXX XXII II XX -X X- XI IX -X- -IX -XI IX- XI- X_X _X-
참고 :이 경우 밑줄 (_)은 특수 문자로 간주되지 않습니다.
/\bX\b/g
특수 문자 또는 공백으로 시작하고 끝나야합니다.
XIX IXI XX X I II IIXX XXII II XX – X XX -I I- XX – -I- XX -I I- XX -I- X_X _X-
/\bX/g
특수 문자 또는 공백으로 시작해야합니다.
X IX IXI X X X I II IIXX X XII II X – X – X X – X -I IX – X – -I- X – X -I IX – X -I- X _X _X-
/X\b/g
특수 문자 또는 공백으로 끝나야합니다.
XI X IXI X X X I II IIX X XXII II X – X – X X – X -I I- X – X – -I- X – X -I I- X – X -I- X_ X _ X –
/\BX\B/g
해야 하지 시작 하지 특수 문자 나 공백으로 종료
XIX I X I XX XI II II X X X X II II XX -X X- XI IX -X- -IX -XI IX- XI- X_X _X-
/\BX/g
해야 하지 특수 문자 나 공백으로 시작
XI X 나 X 나 X X XI II II XX X X II II XX -X X- XI IX -X- -ix -xi IX- XI- X_ X _ X –
/X\B/g
특수 문자 또는 공백으로 끝나서 는 안됩니다.
X IX I X I X X XI II II X X XX II II XX -X X- XI IX -X- -IX -XI IX- XI- X _X _X-
/\bX\B/g
특수 문자 또는 공백으로 시작하고 끝나지 않아야 합니다.
X IX IXI X X XI II II X X X XII II XX -X X- XI IX -X- -IX -XI IX- XI- X _X _X-
/\BX\b/g
해야 하지 시작하고 특수 문자 나 공백으로 끝나야합니다
XI X IXI X X XI II IIX X XXII II XX -X X- XI IX -X- -ix -xi IX- XI- X_ X _ X –
답변
출처 © 저작권 RexEgg.com
단어 경계 : \ b *
단어 경계 \ b는 한 쪽이 단어 문자 (일반적으로 문자, 숫자 또는 밑줄이지만 엔진 간의 변형은 아래 참조)이고 다른 쪽은 단어 문자가 아닌 위치와 일치합니다 (예 : 문자열 또는 공백 문자).
따라서 정규식 \ bcat \ b는 검은 고양이의 고양이와 일치하지만 catatonic, tomcat 또는 인증서에서는 일치하지 않습니다. 경계 중 하나를 제거하면 \ bcat은 catfish의 cat과 일치하고 cat \ b는 tomcat의 cat과 일치하지만 그 반대는 아닙니다. 물론 둘 다 자체적으로 고양이와 일치합니다.
단어 경계가 아님 : \ B
\ B는 \ b가 일치하지 않는 모든 위치와 일치합니다. 따라서 다음과 일치합니다.
✽ 어느 쪽도 단어 문자가 아닌 경우, 예를 들어 문자열 $ = (@-% ++) (문자열의 시작과 끝 포함)의 임의 위치
✽ 양쪽이 단어 문자 인 경우 (예 : Hi!에서 H와 i 사이)
이것은 그다지 유용하지 않은 것 같지만 때때로 \ B가 원하는 것입니다. 예를 들어
✽ \ Bcat \ B는 인증서에서와 같이 단어 문자로 완전히 둘러싸인 고양이를 찾지 만 그 자체로도, 단어의 시작이나 끝에서도 찾을 수 없습니다.
✽ cat \ B는 인증서와 메기 모두에서 고양이를 찾을 수 있지만 바람둥이에서나 자체적으로 고양이를 찾을 수 없습니다.
✽ \ Bcat은 인증서와 바람둥이 둘 다에서 고양이를 찾지 만 메기 나 그 자체로는 찾을 수 없습니다.
✽ \ Bcat | cat \ B는 인증서, 메기 또는 바람둥이와 같은 내장 된 상황에서 고양이를 찾지 만 그 자체로는 찾을 수 없습니다.