본문 바로가기
- Synology

시놀로지 RSS 정규식 구문 추가 공부

by Vesselor 2020. 3. 30.

지난번 포스팅에서 정규식 넣는 방법을 정리했는데, 좋은 방법이긴 하지만 시놀로지를 초기화하거나 또는 다른 걸 추가 할 때마다 필터 수량을 하나하나 늘리는 방법은 효율적이지 않다. 왜냐하면 토렌트 RSS 피드가 영원한 법도 없거니와, 혹시라도 RSS 피더가 사라지는 경우, 10개가 넘는 필터를 일일히 만들어줘야 하기 때문이다. 무슨 말인지 써놓고 보니 나도 모르겠지만, 읽다보면 알게된다. 

 

https://vesselor.tistory.com/59

 

시놀로지 RSS 토렌트 자동 다운 받기 (2/2)

헉헉, 눈도 아픈데 영감님들 잘 따라오셨나요. 믹스커피 한잔하셨으니, 이제 더 열심히해서 우리같은 영감들도 한 번 또렌또를 한 번 자동으로 다운받아봅시다요. 화이띵~ 힘내서 따라오세요. 근데 여기 내용은 나..

vesselor.tistory.com

 

이전에 올린 포스팅은, 아래처럼 각각의 프로그램에 대하여 별도의 필터를 아래와 같이 설정하는 것인데 이게 한 두개일 경우는 몇 번 반복하면 된다지만, 10개가 넘고 20개가 넘어가는 경우에는 하나하나 입력해 주는 게 만만치 않은 관계로 OR 를 응용하여 필터 설정을 하기로 한다. 

 

 

케이스 별로 예시를 들어본다. 

 

1. 미운 우리 새끼 720p, 뭉쳐야 찬다 720p를 동시에 필터링해서 다운 받고 싶은 경우.

(?=.*미운).*(?=.*720p).*|(?=.*뭉쳐).*(?=.*720p).*

위의 정규식 필터링 예제를 보면 알 수 있듯이, 미운 우리 새끼에서도 1080p는 필터링에서 제외된 것을 알 수 있다. 

 

 

2. 미운 우리 새끼 1080p, 뭉쳐야 찬다 720p를 동시에 필터링해서 다운 받고 싶은 경우.

(?=.*미운).*(?=.*1080p).*|(?=.*뭉쳐).*(?=.*720p).*

그런데, 뭉쳐야 찬다의 경우 E39가 두 개나 다운받게 되어있다. 이런 경우, 일단 받아두고 삭제하거나 텍스트로 한번 더 필터링을 걸어주면 되겠다. NEXT릴을 선택해주는게 무난해 보이므로, 아래와 같이 수정할 수 있겠다. 

(?=.*미운).*(?=.*1080p).*|(?=.*뭉쳐).*(?=.*720p).*(?=.*NEXT).*

 

이 정도 필터링이면, 더 이상의 정규식 공부는 무의미 할 것 같고 여기부터는 다운 받은 후 정리하는 것이 훨씬 더 시간을 절약할 수 있겠다. 확장자든, 파일이름이든 올리는 사람 마음대로 올릴것이고 RSS 피드 자체도 언제 어떻게 바뀔지 모르는데 굳이 정규식을 더더욱 자세하게 만들어서 파봤자, 시간낭비다.

 

참고로 정규식에 대해서 나름 자세하게 설명된, 블로그 링크 + 본문도 복붙해본다. 내용이자주 사라져서;;;

 

http://blog.naver.com/PostView.nhn?blogId=yonga&logNo=150004198246

 

정규식 구문 정리(Regex)

봐도 봐도 암호 같은 정규식 닷넷 프레임워크 SDK 자료가 프린트해서 보기 불편해서, 정리했습니다. 정...

blog.naver.com

 

 

봐도 봐도 암호 같은 정규식

 

닷넷 프레임워크 SDK 자료가 프린트해서 보기 불편해서, 정리했습니다.

정규식 테스트 용 Tool로는 오픈소스 프로젝트인 Regulator 좋습니다.

[URL01]http://sourceforge.net/projects/regulator/

 

교체 구문

다음 표에는 일치를 허용하도록 정규식을 수정하는 특수 문자가 나열되어 있습니다.

교체 구문

정의

|

세로 막대(|) 문자로 분리된 용어  하나를 나타냅니다 (: cat|dog|tiger).  왼쪽에서 발견된 일치가 우선합니다.

(?(expression)yes|no)

정규식이  지점에서 일치하면 "yes" 부분을 나타내고 그렇지 않으면 "no" 부분을 나타냅니다. "no" 부분은 생략할  있습니다. 식은 유효한 모든 부분식이   있지만 너비가 0 어설션으로 전환되므로  구문은 (?(?=expression)yes|no) 동일합니다. 정규식이 명명된 그룹의 이름 또는 캡처 그룹 번호인 경우 교체 구문은 캡처 테스트로 해석됩니다( 표의 다음 행에서 설명). 이런 경우의 혼란을 막으려면 명시적으로 내부 (?=expression) 지정합니다.

(?(name)yes|no)

명명된 캡처 문자열에 일치가 있으면 "yes" 부분을 나타내고 그렇지 않으면 "no" 부분을 나타냅니다. "no" 부분은 생략할  있습니다. 지정된 이름이  식에서 사용되는 캡처 그룹의 이름 또는 번호와 일치하지 않을 경우에는 교체 구문이  테스트로 해석됩니다( 표의  행에서 설명).

 

정규식 구문

정규식은 일반 문자(: a-z 문자)  메타문자 알려진 특수 문자로 구성된 텍스트의 패턴입니다. 패턴에서는 텍스트를 검색할  찾아야  하나 이상의 문자열에 대해 설명합니다.

정규식의  가지 예는 다음과 같습니다.

일치 항목

/^\s*$/

 줄을 찾습니다.

/\d{2}-\d{5}/

2자리 숫자, 하이픈  추가 5자리 숫자로 구성된 ID 번호의 유효성을 검사합니다.

/<\s*(\S+)(\s[^>]*)?>[\s\S]*<\s*\/\1\s*>/

HTML 태그를 찾습니다.

 

다음 표에는 정규식 컨텍스트의 메타문자와  동작에 대한 전체 목록이 들어 있습니다.

문자

설명

\

다음에 오는 문자를 특수 문자, 리터럴, 역참조 또는 8진수 이스케이프로 표시합니다. 예를 들어, 'n' 문자 "n" 찾지만 '\n'  바꿈 문자를 찾습니다. 시퀀스 '\\' "\" 찾고 "\(" "(" 찾습니다.

^

입력 문자열의 시작 부분에서 위치를 찾습니다. RegExp 개체의 Multiline 속성이 설정되어 있으면 ^에서는 '\n'이나 '\r' 다음의 위치도 찾습니다.

$

입력 문자열의  부분에서 위치를 찾습니다. RegExp 개체의 Multiline 속성이 설정되어 있으면 $ '\n'이나 '\r' 앞의 위치도 찾습니다.

*

앞의 문자나 부분식을 0 이상 찾습니다. 예를 들어, zo* "z" "zoo" 찾습니다. * {0,} 해당합니다.

+

앞의 문자나 부분식을 1 이상 찾습니다. 예를 들어, 'zo+' "zo" "zoo" 찾지만 "z" 찾지 않습니다. + {1,} 해당합니다.

?

앞의 문자나 부분식을 0개나 1 찾습니다. 예를 들어, "do(es)?" "do" "does"에서 "do" 찾습니다. ?  {0,1} 해당합니다.

{n}

n 음이 아닌 정수입니다. 정확히 n 찾습니다. 예를 들어, 'o{2}' "Bob" 'o' 찾지 않지만 "food" 있는  개의 o 찾습니다.

{n,}

n 음이 아닌 정수입니다. n 이상을 찾습니다. 예를 들어, o{2,} "Bob" "o" 찾지 않지만 "foooood" o 모두 찾습니다. 'o{1,}' 'o+' 해당합니다. 'o{0,}' 'o*' 해당합니다.

{n,m}

M n 음이 아닌 정수로 n <= m이어야 합니다. 최소 n에서 최대 m개의 경우를 찾습니다. 예를 들어, "o{1,3}" "fooooood" 처음에 오는 3개의 o 찾습니다. 'o{0,1}' 'o?' 해당합니다. 쉼표와 숫자 사이에는 공백을 넣을  없습니다.

?

다른 수량자(*, +, ?, {n}, {n,}, {n,m}) 뒤에 바로  문자가 오면 일치하는 패턴은 non-greedy입니다. non-greedy 패턴은 가능한  검색 문자열을 적게 찾습니다. 반면 기본 greedy 패턴은 가능한  검색 문자열을 많이 찾습니다. 예를 들어, "oooo" 문자열에서 'o+?' "o" 하나만 찾는데 'o+' 모든 'o' 찾습니다.

.

"\n"이외의 모든 단일 문자를 찾습니다. '\n' 비롯한 모든 단일 문자를 찾으려면 '[\s\S]' 패턴을 사용합니다.

(pattern)

패턴 찾아 일치하는 항목을 캡처하는 부분식입니다. $0...$9 속성을 사용하여 결과로 생성된 Matches 컬렉션에서 캡처된 일치 항목을 검색할  있습니다. 괄호 문자( ) 찾으려면 '\('이나 '\)' 사용합니다.

(?:pattern)

패턴 찾지만 일치하는 항목은 캡처하지 않는 부분식,  나중에 사용하기 위해 저장하지 않는 비캡처링 일치 항목입니다. 패턴의 일부를 "or" 문자 (| 사용하여 결합할  유용합니다). 예를 들어, 'industr(?:y|ies) 'industry|industries'보다  경제적인 표현입니다.

(?=pattern)

양의 미리 보기 검색을 수행하는 부분식으로 패턴 일치하는 문자열이 시작된 위치에서 문자열을 찾습니다. 이는 비캡처링 일치,  나중에 사용하기 위해 캡처하지 않는 일치입니다. 예를 들어, 'Windows (?=95|98|NT|2000)' "Windows 2000" "Windows" 찾지만 "Windows 3.1" "Windows" 찾지 않습니다. 미리 보기는 문자를 소비하지 않습니다. , 일치가 나타나면 미리 보기를 구성하는 문자 다음이 아니라 마지막 일치 항목 바로 뒤에서 다음 일치 항목에 대한 검색이 시작됩니다.

(?!pattern)

음의 미리 보기 검색을 수행하는 부분식으로 패턴 일치하지 않는 문자열이 시작된 위치에서 검색 문자열을 찾습니다. 이는 비캡처링 일치,  나중에 사용하기 위해 캡처하지 않는 일치입니다. 예를 들어, 'Windows (?!95|98|NT|2000)' "Windows 3.1" "Windows" 찾지만 "Windows 2000" "Windows" 찾지 않습니다. 미리 보기는 문자를 소비하지 않습니다. , 일치가 나타나면 미리 보기를 구성하는 문자 다음이 아니라 마지막 일치 항목 바로 뒤에서 다음 일치 항목에 대한 검색이 시작됩니다.

x|y

x y  하나를 찾습니다. 예를 들어, 'z|food' "z" "food" 찾습니다. '(z|f)ood' "zood" "food" 찾습니다.

[xyz]

문자 집합. 괄호로 묶인 문자  하나를 찾습니다. 예를 들어, '[abc]' "plain"에서 'a' 찾습니다.

[^xyz]

음수 문자 집합. 괄호로 묶이지 않은 문자를 찾습니다. 예를 들어, '[^abc]' "plain"에서 'p' 찾습니다.

[a-z]

문자의 범위. 지정한 범위에서 문자를 찾습니다. 예를 들어, '[a-z]' 'a'에서 'z'까지의 범위에서 소문자 영문자를 찾습니다.

[^a-z]

음의 범위 문자. 지정한 위치에 있지 않은 문자를 찾습니다. 예를 들어, '[^a-z]' 'a'에서 'z'까지의 범위에 있지 않은 문자를 찾습니다.

\b

단어 경계,  단어와 공백 사이의 위치를 찾습니다. 예를 들어, 'er\b' "never" 'er' 찾지만 "verb" 'er' 찾지 않습니다.

\B

비단어 경계를 찾습니다. 'er\B' "verb" 'er' 찾지만 "never" 'er' 찾지 않습니다.

\cx

x 표시된 제어 문자를 찾습니다. 예를 들어, \cM Control-M이나 캐리지 리턴 문자를 찾습니다. x 값은 A-Z이나 a-z 범위에 있어야 합니다. 범위를 벗어나면 c 리터럴 'c' 문자로 간주됩니다.

\d

숫자를 찾습니다. [0-9] 해당합니다.

\D

숫자가 아닌 문자를 찾습니다. [^0-9] 해당합니다.

\f

용지 공급 문자를 찾습니다. \x0c \cL 해당합니다.

\n

 바꿈 문자를 찾습니다. \x0a \cJ 해당합니다.

\r

캐리지 리턴 문자를 찾습니다. \x0d \cM 해당합니다.

\s

공백, , 용지 공급 등을 비롯한 모든 공백 문자를 찾습니다. [\f\n\r\t\v] 해당합니다.

\S

공백이 아닌 문자를 찾습니다. [^ \f\n\r\t\v] 해당합니다.

\t

 문자를 찾습니다. \x09 \cI 해당합니다.

\v

세로  문자를 찾습니다. \x0b \cK 해당합니다.

\w

밑줄을 비롯한 모든 문자를 찾습니다. '[A-Za-z0-9_]' 해당합니다.

\W

비단어 문자를 찾습니다. '[^A-Za-z0-9_]' 해당합니다.

\xn

n 찾는데, 여기서 n 16진수 이스케이프 값입니다. 16진수 이스케이프 값은 정확히  자리 수입니다. 예를 들어, '\x41' "A" 찾습니다. '\x041' '\x04' & "1" 해당합니다. ASCII 코드가 정규식에 사용될  있습니다.

\num

num 찾는데, 여기서 num 양의 정수입니다. 캡처된 일치에 대한 역참조입니다. 예를 들어, '(.)\1'  개의 연속된 동일 문자를 찾습니다.

\n

8진수 이스케이프 값이나 역참조  하나를 식별합니다. \n 앞에 n 이하의 캡처된 부분식이 오면 n 역참조입니다. 그렇지 않고 n 8진수(0-7)이면 n 8진수 이스케이프 값입니다.

\nm

8진수 이스케이프 값이나 역참조  하나를 식별합니다. \nm 앞에 nm 이하의 캡처된 부분식이 오면 nm 역참조입니다. \nm n 이하의 캡처 앞에 오면 n 뒤에 리터럴 m 오는 역참조입니다. 앞의  가지 경우에 해당하지 않고 n m 8진수(0-7)이면 \nm 8진수 이스케이프  nm 찾습니다.

\nml

n 8진수(0-3)이고 m l 8진수(0-7) 8진수 이스케이프  nml 찾습니다.

\un

n 찾는데, 여기서 n  자리 16진수로 표현된 유니코드 문자입니다. 예를 들어, \u00A9 저작권 기호(©) 찾습니다.

 

그룹화 구문

그룹화 구문을 사용하면 부분식 그룹을 캡처할  있으며 비캡처 lookahead  lookbehind 한정자가 있는 정규식의 효율성을 높일  있습니다. 다음 표에서는 정규식 그룹화 구문에 대해 설명합니다.

그룹화 구문

설명

(   )

일치하는 부분 문자열 또는 비캡처 그룹을 캡처합니다. 자세한 내용은 정규식 옵션에서 ExplicitCapture 옵션을 참조하십시오. () 사용하는 캡처는 여는 괄호의 순서에 따라 자동으로 1부터 번호가 지정됩니다. 캡처 요소 번호가 0  번째 캡처는 전체 정규식 패턴과 일치하는 텍스트입니다.

(?<name>   )

일치하는 부분 문자열을 그룹 이름 또는 번호 이름에 캡처합니다. name 사용되는 문자열은 문장 부호를 포함할  없고 숫자로 시작할  없습니다. 꺾쇠 괄호 대신 작은따옴표를 사용할  있습니다(: (?'name')).

(?<name1-name2> )

균형 조정 그룹 정의입니다. 이전에 정의된 그룹 name2 정의를 삭제하고 name2 그룹과 현재 그룹 사이의 간격인 그룹 name1 저장합니다. 그룹 name2 정의하지 않은 경우에는 일치가 역추적됩니다. name2 마지막 정의를 삭제하면 name2 이전 정의가 드러나므로  구문을 사용하면 그룹 name2 대한 캡처의 스택을 카운터로 사용하여 괄호와 같은 중첩 구문을 추적할  있습니다.  구문에서 name1 선택적입니다. 꺾쇠 괄호 대신 작은따옴표를 사용할  있습니다(: (?'name1-name2')).

(?:   )

비캡처 그룹입니다.

(?imnsx-imnsx:   )

부분식에서 지정된 옵션을 적용하거나 사용하지 않도록 설정합니다. 예를 들어, (?i-s: ) /소문자를 구분하지 않도록 하고 단일  모드를 해제합니다. 자세한 내용은 정규식 옵션 참조하십시오.

(?=   )

너비가 0 양수 lookahead 어설션입니다. 부분식이 오른쪽의  위치에서 일치하는 경우에만 계속 검색합니다. 예를 들어, \w+(?=\d) 단어   다음의 숫자를 나타내며  경우 숫자는 일치하지 않습니다.  구문은 역추적되지 않습니다.

(?!   )

너비가 0 음수 lookahead 어설션입니다. 부분식이 오른쪽의  위치에서 일치하지 않는 경우에만 계속 검색합니다. 예를 들어, \b(?!un)\w+\b un으로 시작하지 않는 단어를 나타냅니다.

(?<=   )

너비가 0 양수 lookbehind 어설션입니다. 부분식이 왼쪽의  위치에서 일치하는 경우에만 계속 검색합니다. 예를 들어, (?<=19)99 19 다음에 나오는 99 나타냅니다.  구문은 역추적되지 않습니다.

(?<!   )

너비가 0 음수 lookbehind 어설션입니다. 부분식이 왼쪽의 위치에서 일치하지 않는 경우에만 계속 검색합니다.

(?>   )

역추적하지 않는 부분식(적극적 부분식)입니다. 부분식이 완전히 일치하면 역추적에 참여하지 않습니다. , 부분식에서는 부분식 자체와 일치하는 문자열만 일치로 취급합니다.

명명된 캡처는 명명되지 않은 캡처와 마찬가지로 여는 괄호의 순서에 따라 왼쪽에서 오른쪽으로 번호가 매겨집니다. 그러나 명명된 캡처에 대한 번호는 명명되지 않은 모든 캡처 다음에 이어집니다. 예를 들어, 패턴 ((?<One>abc)/d+)?(?<Two>xyz)(.*) 사용하면 번호  이름 별로 다음과 같은 캡처 그룹이 생성됩니다.  번째 캡처(0) 항상 전체 패턴을 나타냅니다.

숫자

이름

패턴

0

0(기본 이름)

((?<One>abc)/d+)?(?<Two>xyz)(.*)

1

1(기본 이름)

((?<One>abc)/d+)

2

2(기본 이름)

(.*)

3

One

(?<One>abc)

4

Two

(?<Two>xyz)

 

기타 구문

다음 표에는 정규식을 수정하는 부분식이 나열되어 있습니다.

구문

정의

(?imnsx-imnsx)

패턴 중간에 /소문자 구분하지 않음과 같은 옵션을 설정하거나 해제합니다. 특정 옵션에 대한 자세한 내용은 정규식 옵션 참조하십시오. 옵션 변경은 포함 그룹의 끝에 도달할 때까지 유효합니다. 클리너 형식인 그룹화 구문(?imnsx-imnsx: ) 대한 내용을 참조하십시오.

(?#   )

정규식에 삽입되는 인라인 주석입니다. 주석은  번째 닫는 괄호 문자에서 종료됩니다.

# [to end of line]

X-모드 주석. 주석은 이스케이프되지 않은 #에서 시작하여  끝까지 이어집니다. x 옵션 또는 RegexOptions.IgnorePatternWhitespace 열거 옵션을 활성화하여 이런 종류의 주석이 인식되도록 해야 합니다.

 

너비가 0 원자적 어설션

정규식 언어 요소 | 정규식 옵션

다음 표에서 설명하는 메타문자는 엔진에서 문자열을 따라 가거나 문자를 소비하도록 영향을 미치지는 않으며, 단지 문자열에서의 현재 위치에 따라 일치하는 내용을 찾는  성공하거나 실패하도록 영향을 미칩니다. 예를 들어, ^ 사용하면  또는 문자열의 시작 부분이 현재 위치로 지정됩니다. 따라서 정규식 ^FTP 사용하면  시작 부분에서 발견된 "FTP" 문자열만 반환됩니다.

어설션

설명

^

일치하는 내용을 문자열 또는 줄의 시작 부분에서 찾도록 지정합니다. 자세한 내용은 정규식 옵션에서 Multiline 옵션을 참조하십시오.

$

일치하는 내용을 문자열의 , 문자열 끝의 \n  또는 줄의 끝에서 찾도록 지정합니다. 자세한 내용은 정규식 옵션에서 Multiline 옵션을 참조하십시오.

\A

일치하는 내용을 문자열 시작 부분에서 찾도록 지정합니다(Multiline 옵션 무시).

\Z

일치하는 내용을 문자열의 끝이나 문자열 끝의 \n 앞에서 찾도록 지정합니다(Multiline 옵션 무시).

\z

일치하는 내용을 문자열 끝에서 찾도록 지정합니다(Multiline 옵션 무시).

\G

일치하는 내용을 이전의 일치하는 내용이 끝난 지점에서 찾도록 지정합니다. Match.NextMatch() 함께 사용하면 일치하는 내용이 모두 연속됩니다.

\b

\w(영숫자 문자) \W(영숫자가 아닌 문자) 사이의 경계에서만 일치하는 내용을 찾도록 지정합니다. 일치하는 내용을 단어의 경계 , 영숫자가 아닌 문자로 구분된 단어의  문자 또는 마지막 문자 위치에서 찾아야 합니다.

\B

일치하는 내용을 \b 경계가 아닌 부분에서 찾도록 지정합니다.

 

대체

정규식 언어 요소

바꾸기 패턴 내에서만 대체를 사용할  있습니다. 정규식에서 이와 유사한 기능을 사용하려면 \1 같은 역참조를 사용합니다. 역참조에 대한 자세한 내용은 역참조  역참조 구문 참조하십시오.

문자 이스케이프  대체는 바꾸기 패턴에서만 인식되는 특수한 구문입니다. 다음 단원에서 설명하는 모든 구문은 정규식에서만 사용할  있으며, 바꾸기 패턴에서 사용하면 구문을 인식할  없습니다. 예를 들어, 바꾸기 패턴 a*${txt}b 사용하면 문자열 "a*" 삽입되고,  뒤에 txt 캡처 그룹과 일치하는 부분 문자열, 마지막에 문자열 "b"(있는 경우) 삽입됩니다. 바꾸기 패턴에서 * 문자는 메타문자로 인식되지 않습니다. 마찬가지로 $ 패턴은 정규식에서 일치 패턴으로 인식되지 않습니다. 정규식에서 $ 문자열의 끝을 나타냅니다.

다음 표에는 명명되고 번호가 매겨진 바꾸기 패턴을 정의하는 방법이 나와 있습니다.

문자

설명

$number

그룹 번호 number(10진수) 일치하는 마지막 부분 문자열을 대체합니다.

${name}

(?<name> ) 그룹과 일치하는 마지막 문자열을 대체합니다.

$$

하나의 "$" 리터럴을 대체합니다.

$&

일치하는 전체 문자열의 복사본을 대체합니다.

$`

일치하는 문자열 앞에 있는 입력 문자열의 모든 텍스트를 대체합니다.

$'

일치하는 문자열 뒤에 있는 입력 문자열의 모든 텍스트를 대체합니다.

$+

캡처된 마지막 그룹을 대체합니다.

$_

전체 입력 문자열을 대체합니다.

 

문자 이스케이프

대부분의 주요 정규식 언어 연산자는 이스케이프되지 않은 단일 문자입니다. 정규식 파서에서는 이스케이프 문자 \(단일 백슬래시) 다음에 나오는 문자를 연산자로 인식하지 않습니다. 예를 들어, 정규식 파서에서는 별표(*) 반복 수량자로 취급하고 백슬래시 뒤에 별표가 있으면(\*) 유니코드 문자 002A 간주합니다.

다음 표에는 정규식과 바꾸기 패턴에서 모두 인식되는 문자 이스케이프가 나열되어 있습니다.

이스케이프된 문자

설명

일반 문자

. $ ^ { [ ( | * + ? \ 이외의 문자는 문자  자체를 나타냅니다.

\a

(경보) 의미하는 \u0007 나타냅니다.

\b

[] 문자 클래스 포함된 경우에는 백스페이스인 \u0008 나타냅니다. 그렇지 않은 경우에 대해서는  아래의 "참고" 설명되어 있습니다.

\t

탭을 의미하는 \u0009 나타냅니다.

\r

캐리지 리턴 문자인 \u000D 나타냅니다.

\v

세로 탭인 \u000B 나타냅니다.

\f

용지 공급을 의미하는 \u000C 나타냅니다.

\n

 바꿈을 의미하는 \u000A 나타냅니다.

\e

이스케이프인 \u001B 나타냅니다.

\040

문자 번호를 8진수로 표시(최대  자리) ASCII 문자입니다. 앞에 0 없는 경우,  자리 숫자이거나 캡처하는 그룹 번호에 해당하면 역참조를 나타냅니다. 자세한 내용은 역참조를 참조하십시오. 예를 들어, 문자 \040 공백을 나타냅니다.

\x20

문자 번호를 16진수로 표시( 자리) ASCII 문자입니다.

\cC

해당 ASCII 제어 문자를 나타냅니다. 예를 들어, \cC 제어 문자 C 나타냅니다.

\u0020

문자 번호를 16진수로 표시( 자리) 유니코드 문자입니다.

\

이스케이프된 문자로 인식되지 않는 문자를  문자 다음에 넣어 문자 자체를 나타냅니다. 예를 들어, \* \x2A 같습니다.

참고   이스케이프된 문자 \b 특수하게 사용됩니다. 정규식에서 사용할  \b 단어 경계(\w \W 문자 사이) 나타내지만 [] 문자 클래스 내에서 사용할 때는 백스페이스 문자를 나타냅니다. 바꾸기 패턴에서는 항상 백스페이스를 나타냅니다.

 

문자 클래스

정규식 언어 요소 | GetUnicodeCategory | 정규식 옵션

문자 클래스는 문자 집합에 포함된 문자  어느 하나가 나타나지 않을  해당 문자를 찾는 문자 집합입니다. 다음 표에는 문자 클래스   의미가 요약되어 있습니다.

문자 클래스

설명

.

\n 제외한 문자를 나타냅니다. Singleline 옵션에 의해 수정된 경우 마침표 문자는 임의의 문자를 나타냅니다. 자세한 내용은 정규식 옵션 참조하십시오.

[aeiou]

지정한 문자 집합에 포함되어 있는 단일 문자를 나타냅니다.

[^aeiou]

지정한 문자 집합에 포함되어 있지 않은 단일 문자를 나타냅니다.

[0-9a-fA-F]

하이픈() 사용하여 연속적인 특정 범위의 문자를 지정할  있습니다.

\p{name}

{name}에서 지정하는 명명된 문자 클래스에 있는 문자를 나타냅니다. 지원되는 이름은 유니코드 그룹  블록 범위입니다( : Ll, Nd, Z, IsGreek, IsBoxDrawing).

\P{name}

{name} 지정한 그룹  블록 범위에 포함되지 않은 텍스트를 나타냅니다.

\w

단어 문자를 나타냅니다. 유니코드 문자 범주 [\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}] 동일합니다. ECMAScript 호환되는 동작이 ECMAScript 옵션으로 지정된 경우 \w [a-zA-Z_0-9] 같습니다.

\W

단어 문자가 아닌 문자를 나타냅니다. 유니코드 범주 [^\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}] 동일합니다. ECMAScript 호환되는 동작이 ECMAScript 옵션으로 지정된 경우 \W [^a-zA-Z_0-9] 같습니다.

\s

공백 문자를 나타냅니다. 유니코드 문자 범주 [\f\n\r\t\v\x85\p{Z}] 동일합니다. ECMAScript 호환되는 동작이 ECMAScript 옵션으로 지정된 경우 \s [ \f\n\r\t\v] 같습니다.

\S

공백 문자가 아닌 문자를 나타냅니다. 유니코드 문자 범주 [^\f\n\r\t\v\x85\p{Z}] 동일합니다. ECMAScript 호환되는 동작이 ECMAScript 옵션으로 지정된 경우 \S [^ \f\n\r\t\v] 같습니다.

\d

10십진수를 나타냅니다. 유니코드에 대해 \p{Nd}, 비유니코드에 대해 [0-9] ECMAScript 동작입니다.

\D

10진수가 아닌 숫자를 나타냅니다. 유니코드에 대해 \P{Nd}, 비유니코드에 대해 [^0-9] ECMAScript 동작입니다.

GetUnicodeCategory 메서드를 사용하면 문자가 속한 유니코드 범주를 찾을  있습니다.

유니코드 문자 범주에 대한 자세한 내용은 UTC(Unicode Technical Committee)  사이트
(http://www.unicode.org/Public/UNIDATA/UnicodeData.html)
에서 Unicode Data File Format 문서를 참조하십시오.

[출처] 정규식 구문 정리(Regex)|작성자 용아

댓글