관리 메뉴

ㄴrㅎnㅂrㄹrㄱi

RegExMatch() 문자열중으로부터 정규 표현 패턴에 일치하는 개소를 검색해, 위치를 돌려준다 본문

AUTOHOTKEY/레퍼런스

RegExMatch() 문자열중으로부터 정규 표현 패턴에 일치하는 개소를 검색해, 위치를 돌려준다

님투 2007. 11. 5. 16:35
반응형

RegExMatch()

문자열중으로부터 정규 표현 패턴에 일치하는 개소를 검색해, 위치를 돌려준다

RegExMatch(Target, Pattern [, OutputVar = "", StartingPos = 1])

Parameters


인수명 설명
Target 검색 대상이 되는 문자열
Pattern 검색하는 정규 표현 패턴.자세한 것은 정규 표현의 항을 참조.
옵션은 패턴의 전에 「)」(으)로 단락지어 기술한다(례:「im)\.jpe?g$」)
옵션이 없는 경우는, 「)」(은)는 불요.(례:「\.JPE?G$」)
OutputVar 「()」등에서 둘러싸인 식 집합 매치한 서브 매치 문자열을 격납하는 변수를 지정한다.
이 변수 자체에는, 정규 표현 전체가 매치한 내용이 격납된다.
이 변수의 이름의 후에, 「(」의 출현순서에 대응한 번호를 붙인 이름의 변수에, 그 「()」 안의 정규 표현에 일치한 문자열이 격납된다.
성냥 하지 않았던 것에 대해서는, 길이0의 문자열이 된다.
예를 들면, 「RegExMatch("2006-11-06","(\d\d\d\d)-(\d\d)-(\d\d)",$)」라고 하면, 「$」변수에는 「2006-11-06」(이)가, 「$1」변수에는 「2006」(이)가, 「$2」변수에는 「11」(이)가, 「$3」변수에는 「06」(이)가 격납된다.
이름 포획식 집합을 사용했을 경우는, 차례를 나타내는 숫자 대신에 그 이름이 사용된다.이 경우, 번호 자체는 늘려지지만, 번호에 대응하는 변수에는 값이 격납되지 않는다.
예를 들면, 「RegExMatch("2006-11-06","(?P<Year>\d{4})-(\d{2})-(\d{2})",$)」라고 하면, 「$Year」변수에는 「2006」(이)가, 「$2」변수에는 「11」(이)가, 「$3」변수에는 「06」(이)가 격납된다.「$1」변수에는 어떤 변화도 일어나지 않고, 전의 값이 유지된다.
StartingPos Target안에서의 검색을 개시하는 위치.선두는 「1」.
Target의 문자수보다 큰 값을 지정했을 경우는, 하늘의 문자열(Target의 마지막0문자의 범위)에 대해 검색을 한다(통상은 아무것도 성냥 하지 않는다).
0이하의 값을 지정했을 경우는, 문자열의 말미로부터 지정 문자 몇분의 범위가 검색된다.
예를 들면, 「0」(을)를 지정했을 경우는, 문자열의 마지막1문자만이, 「-1」(을)를 지정했을 경우, 뒤의2문자가 검색된다.
Target의 길이를 넘는 경우는,Target전체가 검색된다.
생략시는 「1」(Target의 선두로부터 검색).

RegExMatch()고유의 옵션

Pattern의 최초로 부가할 수 있는 옵션중,RegExMatch()만으로 유효한 것은 이하와 같다.
RegExReplace()(와)과 공통의 것에 대해서는, 정규 표현의 항을 참조.

P
OutputVar변수군에게 격납되는 정보를, 매치한 문자열 자체가 아니고, 문자열의 출현 위치와 길이로 한다.
OutputVar자체는, 정규 표현 전체가 매치한 길이가 된다.
각 서브 매치 문자열의Target선두로부터 센 위치가 「OutputVarPos1」 「OutputVarPos2」 등에, 각 서브 매치 문자열의 길이가 「OutputVarLen1」 「OutputVarLen2」 등에 격납된다.
이름 포획식 집합을 사용했을 경우는, 「OutputVarPosYear」 「OutputVarLenYear」 등에 격납된다.
성냥 하지 않았던 것에 대해서는, 위치·사이즈 모두 「0」(이)가 된다.
예를 들면RegExMatch("2006-11-06","P)(?P<Year>\d{4})-(\d{2})-(\d{2})",Match)(으)로 하면, 「Match」에는 「10」(이)가, 「MatchPosYear」에 「1」(이)가, 「MatchLenYear」에 「4」(이)가, 「MatchPos2」에 「6」(이)가, 「MatchLen2」에 「2」(이)가, 「MatchPos3」에 「9」(이)가, 「MatchLen3」에 「2」(이)가 격납된다.

돌아가 값

Target의 선두로부터 센, 패턴에 일치하는 개소의 제일 최초의 출현 위치.
문자열의 선두는 「1」.
발견되지 않았던 경우는 「0」(이)가 된다.
에러로 검색을 하지 않았던 경우는, 길이 제로의 문자열이 된다.

ErrorLevel

정상적으로 검색을 했을 경우는, 「0」.
에러로 검색을 하지 않았던 경우는, 이하의 값이 된다.

Compile error N at offset M:Description
정규 표현의 문법 에러. N(은)는 에러 번호,M(은)는 문제의 발생한 개소(Pattern의 선두가 「1」),Description(은)는 간단한 설명.
그 외의 부의 수치
매치 처리중에 발생한 에러.
정규 표현 자체는 올바르지만, 처리에 필요한 메모리가 확보 다 할 수 없는등의 문제가 있었을 때에 발생한다.

Related

RegExReplace(), InStr(), IfInString, StringGetPos, SetTitleMatchMode RegEx

Examples

FoundPos := RegExMatch("xxxabc123xyz", "abc.*xyz")  ; Returns 4, which is the position where the match was found.
FoundPos := RegExMatch("abc123123", "123$")  ; Returns 7 because the $ requires the match to be at the end.
FoundPos := RegExMatch("abc123", "i)^ABC")  ; Returns 1 because a match was achieved via the case-insensitive option.
FoundPos := RegExMatch("abcXYZ123", "abc(.*)123", SubPat)  ; Returns 1 and stores "XYZ" in SubPat1.
FoundPos := RegExMatch("abc123abc456", "abc\d+", "", 2)  ; Returns 7 instead of 1 due to StartingPos 2 vs. 1.
반응형
Comments