지금까지 예는 장 제목이 나타나는 위치를 찾는 작업에 관한 것이었다.

공백, 숫자가 이어지는 '과제' 문자열의 위치는 실제 장 제목이거나 다른 장에 대한 상호 참조일 수 있다.
실제로 장 제목은 항상 줄의 시작 위치에 있으므로 제목만 찾고 상호 참조는 찾지 않는 방법을 만들 수 있다.

앤커가 이러한 기능을 제공한다.

앤커를 사용하면 정규식을 줄의 시작이나 끝으로 고정시킬 수 있다. 단어 내부 또는 단어 시작이나 끝에 나타나는 정규식을 만들 수도 있다.

다음 표는 정규식 앤커를 설명한다.

문자요약설명
^시작 위치 입력 문자열의 시작 위치를 찾는다.
multiline(m) 속성이 설정되어 있으면 ^는 '\n' 또는 '\r' 앞의 위치를 찾는다.
$끝 위치 입력 문자열의 끝 위치를 찾는다.
multiline 속성이 설정되어 있으면 $는 '\n' 또는 '\r'의 뒤의 위치를 찾는다.
\b공백 경계 단어의 경계, 즉 단어와 공백 사이의 위치를 찾는다.
예를 들어, 'er\b'는 'never '의 'er'는 찾지만 'verb'의 'er'는 찾지 않다.
\B비공백 경계 단어의 비경계를 찾는다. 'er\B'는 'verb'의 'er'는 찾지만 'never'의 'er'는 찾지 않다.
특기

앤커와 한정 기호는 함께 사용할 수 없다.
줄 바꿈 또는 단어 경계 전후 바로 다음에는 한 자리만 올 수 있으므로 '^*'와 같은 식은 허용되지 않다.

문자열 줄의 시작 위치에 있는 부분 문자열를 찾으려면 정규식 시작에 '^' 문자를 사용한다.
이것은 대괄호 식에서 사용하는 '^'와는 다르다.

문자열 줄 끝에 있는 부분 문자열를 찾으려면 정규식 끝에 '$' 문자를 사용한다.


refers
정규식 앤커
이전페이지로페이지 맨위로페이지 맨아래로

설명을 위한 예제

정규식에 전역 검색을 위한 global(g) 속성과
여러줄 검색을 위한 multiline(m) 속성을 추가하고 match메서드를 사용하였다.

예제를 위한 공통 코드
과제 11 11 내용이다. 과제 12 12 내용이다. 과제 19 19 내용이다.20 내용이다. 과제 20
string='과제 11 11 내용이다. 과제 12 12 내용이다. \n과제 19 19 내용이다.20 내용이다. 과제 20과제';
document.write(string);
줄의 시작 위치에서

장 제목을 찾을 때 다음 Javascript 정규식에서처럼 앤커를 사용할 수 있다.
줄의 시작 위치에서 두 자리까지 장 제목을 찾는다.

과제 11,과제 19

제일 앞과 새줄(\n) 바로 뒤의 것들 과제 11과제 19 만 찾았다.

reg=/^과제 [0-9][0-9]{0,1}/gm;
document.write(string.match(reg));

이와 동일한 VBScript의 정규식은 다음과 같다.

"^과제 [1-9][0-9]{0,1}"
줄의 끝 위치에서

줄에는 장 제목은 줄의 끝에 있을 수 있다. 이 정규식은 문자열 줄의 끝에서만 찾는다.

과제 20
reg=/과제 [1-9][0-9]{0,1}$/gm;
document.write(string.match(reg));

VBScript 를 사용하는 경우는 다음과 같다.

"과제 [1-9][0-9]{0,1}$"
줄에 유일한 장 제목

실제로 장 제목이 있는 줄에는 장 제목만 있으므로 장 제목은 줄의 시작이나 끝에 있어야 한다.
다음 식에서 지정된 검색 문자열은 장만 찾고 상호 참조는 찾지 않다.
따라서 이 정규식은 문자열 줄의 시작과 끝에서만 찾는다.

과제 20

실험을 위하여 새로운 무자열을 지정하였다.

string1='과제 20';
reg=/^과제 [1-9][0-9]{0,1}$/gm;
document.write(string1.match(reg));

VBScript 를 사용하는 경우는 다음과 같다.

"^과제 [1-9][0-9]{0,1}$"
단어 경계를 찾아서

단어 경계를 찾는 방법은 약간 다르지만 정규식에 매우 중요한 기능을 추가한다.
단어 경계(\b)는 단어와 공백 사이의 위치이다. 비단어 경계(\B)는 그외 다른 위치이다.

여기서 '\b' 연산자의 위치는 매우 중요하다.
이 연산자가 검색할 문자열 앞에 올 경우 단어의 시작 부분에서 문자열을 찾고,
검색할 문자열 뒤에 올 경우에는 단어의 끝 부분에서 문자열을 찾는다.

null
null
reg=/\b과/gm;
document.write(string.match(reg));
reg=/제\b/gm;
document.write(string.match(reg));

문제가 발생되었다.
문제는 한글은 모두 비단어 취급을 하기 때문에 단어 경계를 찾을 수 없어 없는 것으로 나타났다.
다라서 한글의 경우는 이 정규식으로 검색 결과 찾지 못한다.

영어로 변수를 지정해서 검색해 보면...

Sub,Sub
ject,ject

앞 예제는 'Sub' 앞이 공백이므로 'Subject'의 'Sub'를 찾는다.
뒤 예제는 'ject' 뒤가 공백이므로 'Subject'의 'ject'를 찾는다.

string1='Subject 11, Subject 12';
reg=/\bSub/gm;
document.write(string1.match(reg),'<BR>');
reg=/ject\b/gm;
document.write(string1.match(reg));
비공백 단어/문자 연결에서 위치에서

이번엔 단어 연결 부분대신 비단어 연결부분으로 찾아보자. 다음 식은 '제목'의 '제'를 찾는다.

제,제,제,제
과,과,과,과

앞 예제는 '' 뒤가 비공백이므로 '과제'의 ''를 찾는다.
뒤 예제는 '' 앞이 비공백이므로 '과제'의 ''를 찾는다.

reg=/제\B/gm;
document.write(string.match(reg),'<BR>');
reg=/\B과/gm;
document.write(string.match(reg));
영어의 경우
ject,ject
Sub,Sub

앞 예제는 'ject' 앞이 비공백이므로 'Subject'의 'ject'를 찾는다.
뒤 예제는 'Sub' 뒤가 비공백이므로 'Subject'의 'Sub'를 찾는다.

reg=/\Bject/gm;
document.write(string1.match(reg),'<BR>');
reg=/Sub\B/gm;
document.write(string1.match(reg));

비단어 경계 연산자의 경우 검색할 문자열이 단어 시작이나 끝과 관계가 없으므로 위치는 중요하지 않다.


refers
정규식 앤커
견본
이전페이지로페이지 맨위로
최종 수정:
04/30/2025 13:46:40
KoXo Homepage
All right reserved
비정상적인 방식으로 프레임없이 페이지에 접속하면 자주 오류가 발생됩니다.
오류가 나면 정상적 접속으로 시도해 보세요.
http://koxo.com/lang/js/refers/global.html