Regular Expressions
앵커 캐릭터 : 캐럿 (^)
수색…
비고
술어
캐럿 (^) 문자는 다음 용어로도 참조됩니다.
- 모자
- 제어
- 업로 우드
- 쉐브론
- 곡절 악센트
용법
정규식에는 두 가지 용도가 있습니다.
- 행의 시작을 나타 내기 위해
- 대괄호 (
[^
) 바로 뒤에 사용하면 허용되는 문자 집합을 무효화합니다 (즉,[123]
은 문자 1, 2 또는 3이 허용됨을 의미하고[^123]
은 1 이외의 문자를 의미합니다 , 2 또는 3이 허용됩니다.
문자 이스케이프
특수한 의미가없는 캐럿을 표현하려면 캐럿 앞에 백 슬래시를 붙여서 이스케이프해야합니다. ie \^
.
라인의 시작
때 멀티 라인 (?m)
수정이 꺼져 ^
단지 입력 문자열의 시작과 일치 :
정규식의 경우
^He
다음 입력 문자열은 다음과 일치합니다.
-
Hedgehog\nFirst line\nLast line
-
Help me, please
-
He
다음 입력 문자열이 일치하지 않습니다 .
-
First line\nHedgehog\nLast line
-
IHedgehog
-
Hedgehog
(공백 때문에))
여러 줄 때 (?m)
수정이 켜져, ^
모든 라인의 시작과 일치 :
^He
위는 He
시작하는 행을 포함하는 입력 문자열과 일치합니다.
줄 바꿈 문자로 \n
을 고려하면 다음 줄이 일치합니다.
-
Hello
-
First line\nHedgehog\nLast line
(두 번째 줄만) -
My\nText\nIs\nHere
(마지막 행만)
다음 입력 문자열이 일치하지 않습니다 .
-
Camden Hells Brewery
-
Helmet
(공백 때문에)
^
사용하여 빈 줄 일치 ^
캐럿의 다른 일반적인 사용 예는 빈 행 (또는 여러 줄 수정자가 꺼져있는 경우 빈 문자열)을 일치시키는 것입니다.
빈 줄 (multi-line on )과 일치시키기 위해 줄 끝의 위치를 나타내는 다른 앵커 문자 인 $
옆에 캐럿이 사용됩니다 ( Anchor Characters : Dollar ($) ). 따라서 다음 정규식은 빈 행과 일치합니다.
^$
캐럿 문자를 이스케이프 처리합니다.
문자 클래스 ( 문자 클래스 )에서 ^
문자를 사용해야하는 경우 클래스의 시작 부분이 아닌 다른 곳에 넣으십시오.
[12^3]
또는 백 슬래시 \
사용하여 ^
를 이스케이프 처리하십시오.
[\^123]
문자 클래스 밖에서 캐럿 문자 자체를 일치 시키려면 이스케이프해야합니다.
\^
이렇게하면 ^
가 문자열 / 줄의 시작 부분을 나타내는 앵커 문자로 해석되는 것을 막을 수 있습니다.
라인 앵커의 비교 시작과 문자열 앵커의 시작
많은 사람들이 ^
는 문자열의 시작을 의미한다고 생각하지만 실제로 는 행의 시작을 의미 합니다. 문자열 앵커 사용의 실제 시작은 \A
입니다.
문자열 hello\nworld
(또는 더 명확하게)
hello
world
정규 표현식 ^h
, ^w
및 \Ah
는 일치하지만 \Aw
는 일치하지 않습니다.
다중 행 수정 자
기본적으로 캐럿 ^
메타 문자는 문자열의 첫 번째 문자 앞에 위치 를 일치시킵니다.
" charsequence "문자열이 /^char/
& /^sequence/
패턴에 적용되면 엔진은 다음과 같이 일치하려고 시도합니다.
/^char/
- ^ -
광문
- c -
c
harsequence - 시간 -
ch
arsequence - A -
cha
rsequence - r -
char
순서
경기 결과
- ^ -
/^sequence/
- ^ -
광문
- s -
광문
경기를 찾을 수 없음
- ^ -
문자열에 줄 끝 기호 (예 : \r?\n
가 포함되어 있어도 동일한 동작이 적용됩니다. 문자열의 시작 부분에있는 위치 만 일치합니다.
예 :
/^/g
┊char \ r \ n
\ r \ n
순서
당신은 모든 라인 종결 후 일치해야하는 경우에는, 당신은 여러 모드를 설정해야합니다 ( //m
, (?m)
) 당신의 패턴 내에서. 이렇게함으로써, 캐럿 ^
문자열의 시작 위치와 위치 직후의 1 라인에 대응 터미네이터 "각 라인의 시작"와 일치한다.
1 일부 종결 자 (Java, PCRE, ...)에서 줄 끝 기호가 문자열의 마지막 인 경우 줄 끝 기호 뒤에 ^
가 일치하지 않습니다.
예 :
/^/gm
┊char \ r \ n
┊ \ r \ n
┊ 시퀀스
Multiline 수정자를 지원하는 정규식 엔진 중 일부는 다음과 같습니다.
Pattern pattern = Pattern.compile("(?m)^abc"); Pattern pattern = Pattern.compile("^abc", Pattern.MULTILINE);
var abcRegex = new Regex("(?m)^abc"); var abdRegex = new Regex("^abc", RegexOptions.Multiline)
/(?m)^abc/ /^abc/m
abc_regex = re.compile("(?m)^abc"); abc_regex = re.compile("^abc", re.MULTILINE);