일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 장고
- oracle
- scrapy
- 텐서플로우
- 윈도우10
- sql developer
- c#
- rs485
- django
- 오라클
- Python
- tensorflow
- 자본주의
- Serial
- M2M
- PYTHON MSSQL
- 크롤링
- Visual Studio Code
- MSSQL PYTHON
- 딥러닝
- matplot
- 파이썬
- MX Component
- 티스토리 초대장
- vscode
- rs422
- MSSQL
- windows10
- pymssql
- MEAN Stack
Archives
- Today
- Total
안까먹을라고 쓰는 블로그
C#_정규식 본문
반응형
using System.Text.RegularExpressions;
정규식은 텍스트 문자열에서 패턴을 명시적으로 설명하는 데 사용할 수 있는 언어입니다. 이러한 패턴을 단순히 설명하는 것 외에도 일반적으로 정규식 엔진을 사용하면 일치 항목을 반복하거나 패턴을 구분 기호로 사용하여 문자열을 하위 문자열로 구문분석하거나 지능적인 방식으로 텍스트를 바꾸거나 형식을 다시 지정할 수 있습니다. 또한 정규식을 사용하여 강력하고 간단한 방식으로 텍스트처리와 관련된 많은 일반작업을 해결할 수 있습니다.
■ 단순식
패턴 | 입력(일치 항목) |
---|---|
foo |
foo, food, foot, "There's evil afoot."
|
■ 한정사
한정사는 항상 한정사 바로 앞(왼쪽)에 있는 패턴을 참조합니다.
1. * "0개 이상의 항목"을 나타냅니다.
2. +는 "1개 이상의 항목"을 나타냅니다.
3. ?는 "0개 또는 1개의 항목"을 나타냅니다.
패턴 | 입력(일치 항목) |
---|---|
fo* | foo, foe, food, fooot, "forget it", funny, puffy |
fo+ | foo, foe, food, foot, "forget it" |
fo? | foo, foe, food, foot, "forget it", funny, puffy |
■ 메타문자
패턴 | 입력(일치 항목) |
---|---|
. | a, b, c, 1, 2, 3 |
.* | Abc, 123, 모든 문자열, 심지어 문자가 없어도 일치 |
^c:\\ | c:\windows, c:\\\\\, c:\foo.txt, c:\ 다음에 오는 임의의 문자 |
abc$ | abc, 123abc, abc로 끝나는 모든 문자열 |
(abc){2,3} | abcabc, abcabcabc
|
■ 문자클래스
패턴 | 입력(일치 항목) |
---|---|
^b[aeiou]t$ | Bat, bet, bit, bot, but |
^[0-9]{5}$ | 11111, 12345, 99999 |
^c:\\ | c:\windows, c:\\\\\, c:\foo.txt, c:\ 다음에 오는 임의의 문자 |
abc$ | abc, 123abc, abc로 끝나는 모든 문자열 |
(abc){2,3} | abcabc, abcabcabc |
^[^-][0-9]$ | 0, 1, 2, … (-0, -1, -2 등과 일치하지 않음)
|
■ 미리정의된 메타문자집합
메타 문자 | 해당 문자 클래스 |
---|---|
\a | 벨(경보)과 일치합니다. \u0007 |
\b | 문자 클래스 안에 사용되는 경우를 제외하고 단어 경계와 일치합니다. 백슬래시 문자 \u0008과 일치합니다. |
\t | 탭과 일치합니다. \u0009 |
\r | 캐리지 리턴과 일치합니다. \u000D |
\w | 세로 탭과 일치합니다. \u000B |
\f | 용지 공급과 일치합니다. \u000C |
\n | 새 행과 일치합니다. \u000A |
\e | 이스케이프와 일치합니다. \u001B |
\040 | 세 자리 8진수를 사용하는 ASCII 문자와 일치합니다. \040은 공백을 나타냅니다(십진수 32). |
\x20 | 두 자리 16진수를 사용하는 ASCII 문자와 일치합니다. 이 경우 \x2-는 공백을 나타냅니다. |
\cC | ASCII 컨트롤 문자와 일치합니다. 이 경우 ctrl-C입니다. |
\u0020 | 정확히 4자리 16진수를 사용하는 유니코드 문자와 일치합니다. 이 경우 \u0020은 공백입니다. |
\* | 미리 정의된 문자 클래스를 나타내지 않는 문자는 단순히 해당 문자로 처리됩니다. 그러므로 \*는 \x2A와 같습니다(*는 메타 문자가 아니라 리터럴임). |
\p{name} | 명명된 문자 클래스 'name'에 있는 임의의 문자와 일치합니다. 지원되는 이름은 유니코드 그룹 및 블록 범위입니다. 예를 들어 Ll, Nd, Z, IsGreek, IsBoxDrawing 및 Sc(통화)와 같습니다. |
\P{name} | 명명된 문자 클래스 'name'에 포함되지 않은 텍스트와 일치합니다. |
\w | 임의의 단어 문자와 일치합니다. 비유니코드 및 ECMAScript 구현의 경우 [a-zA-Z_0-9]와 같습니다. 유니코드 범주에서는 [\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}]와 같습니다. |
\W | \w를 빼고, ECMAScript 규격 집합 [^a-zA-Z_0-9] 또는 유니코드 문자 범주 [^\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}]와 같습니다. |
\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 | 십진수와 일치합니다. 유니코드의 경우 [\p{Nd}]와 같고, 비유니코드 ECMAScript 동작의 경우 [0-9]와 같습니다. |
\D | 십진수가 아닌 숫자와 일치합니다. 유니코드의 경우 [\P{Nd}]와 같고, 비유니코드 ECMAScript 동작의 경우 [^0-9]와 같습니다. |
■ 샘플 식
패턴 | 설명 |
---|---|
^\d{5}$ | 미국 우편 번호와 같은 5자리 숫자입니다. |
^(\d{5})|(\d{5}-\d{4}$ | 5자리 숫자 또는 5자리 숫자-대시-4자리 숫자입니다. 미국 우편 번호 또는 미국 우편 번호+4 형식과 일치합니다. |
^(\d{5}(-\d{4})?$ | 앞의 예와 같지만 더 효율적입니다. ?를 사용하면 교체를 통해 별도의 패턴 두 개를 개별적으로 비교해야 하는 대신에 패턴의 4자리 부분을 선택적으로 입력할 수 있습니다. |
^[+-]?\d+(\.\d+)?$ | 실수와 일치하며 선택적으로 기호를 사용할 수 있습니다. |
^[+-]?\d*\.?\d*$ | 위의 예와 같지만 빈 문자열에도 일치합니다. |
^(20|21|22|23|[01]\d)[0-5]\d$ | 24시간 값과 일치합니다. |
/\*.*\*/ | C 스타일 주석 /* … */의 내용과 일치합니다.
|
■ 정규식 API
메서드 | 설명 |
---|---|
Escape / Unescape | 식에서 리터럴로 사용하기 위해 문자열에서 메타 문자 의미를 해제합니다. |
IsMatch | 입력 문자열에서 일치하는 항목을 찾을 경우 True를 반환합니다. |
Match | 입력 문자열에서 일치하는 항목을 찾을 경우 Match 개체를 반환합니다. |
Matches | 입력 문자열에서 찾은 일치 항목이 모두 포함된 MatchCollection 개체를 반환합니다. |
Replace | 입력 문자열에서 일치하는 항목을 지정된 바꾸기 문자열로 바꿉니다. |
Split | 입력 문자열을 regex 일치 항목으로 구분하여 배열 요소로 나눔으로써 문자열 배열을 반환합니다. |
많은 메서드 외에도, 주로 Regex 개체의 생성자에서 지정할 수 있는 수많은 옵션이 있습니다. 이러한 옵션은 비트 마스크의 일부이므로
OR를 사용할 수 있습니다. 즉, Multiline과 Singleline을 동시에 사용할 수 있습니다.
반응형
'Language > C#' 카테고리의 다른 글
[C#] 제네릭[Generic] (0) | 2012.09.04 |
---|---|
[C#] 시간체크(Stopwatch) (0) | 2012.09.04 |
C#_[Dllimport] (0) | 2012.09.01 |
C#_Thread (0) | 2012.09.01 |
C#_Serial통신 (0) | 2012.09.01 |
Comments