옆히
정규표현식 본문
한 권으로 끝내는 정규표현식 - 잰 고이바에르츠 외 지음, 김지원 옮김/한빛미디어 |
08-2 정규 표현식 시작하기 - 점프 투 파이썬 (wikidocs.net)
자주 사용하는 문자 클래스
[0-9] 또는 [a-zA-Z] 등은 무척 자주 사용하는 정규 표현식이다. 이렇게 자주 사용하는 정규식은 별도의 표기법으로 표현할 수 있다. 다음을 기억해 두자.
- \d - 숫자와 매치된다. [0-9]와 동일한 표현식이다.
- \D - 숫자가 아닌 것과 매치된다. [^0-9]와 동일한 표현식이다.
- \s - 화이트스페이스(whitespace) 문자와 매치된다. [ \t\n\r\f\v]와 동일한 표현식이다. 맨 앞의 빈칸은 공백 문자(space)를 의미한다.
- \S - 화이트스페이스 문자가 아닌 것과 매치된다. [^ \t\n\r\f\v]와 동일한 표현식이다.
- \w - 문자+숫자(alphanumeric)와 매치된다. [a-zA-Z0-9_]와 동일한 표현식이다.
- \W - 문자+숫자(alphanumeric)가 아닌 문자와 매치된다. [^a-zA-Z0-9_]와 동일한 표현식이다.
대문자로 사용된 것은 소문자의 반대임을 추측할 수 있다.
[.] 말그대로 . 의미
*, + 반복자 +는 1회 이상 반복
[] 대괄호 안에 하나라도 일치하면
{m, n} m이상 n이하
? == {0, 1}
match, search, findall, finditer
^txt 줄의 시작
txt$ 줄의 끝
\btxt\b
\b는 단어 구분자(word boundary)이다. 보통 단어는 화이트스페이스에 의해 구분된다.
\B 는 화이트스페이스가 아닌 것으로 구분된 단어 구분자
() grouping
abc+ -> abcc
(abc)+ -> abcabc 묶어줌
\숫자 숫자번째 그룹을 재참조
(abc)+\s+(def)+\s+\1+\s+\2+ => abc def abc def
확장기능: 이름 붙이기 (?P<name>\w+) 이름 재참조 (?P=word)
greedy와 non-greedy
<.*> vs <.*?>
//Regex 클래스를 사용하여 매칭된 그룹 추출하기
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string input = "file_123.txt"; // 예시 입력 문자열
string pattern = @"file_(\d{3})"; // 정규표현식 패턴
// 정규표현식으로 매칭된 부분을 추출
Match match = Regex.Match(input, pattern);
if (match.Success)
{
// 그룹 1에 해당하는 값을 가져옴
string groupValue = match.Groups[1].Value;
Console.WriteLine("그룹된 문자열: " + groupValue); // 출력: 123
}
else
{
Console.WriteLine("매칭된 부분이 없습니다.");
}
}
}
# 메타문자 12개
$, \, *, +, ., ?, (, ), [, {, ^, |
" \"\$ \\ \* \+ \. \? \( \) \[ \{ \^ \|\" " //리터럴 사용
@""" $ \ * + . ? ( ) [ { ^ | """ //@심벌 사용하면 이스케이프 문자 없이도 문자 그대로 인식
# (?i) ~ (?-i)
~ 사이 대소문자 구분 x
#아스키 제어 문자
백슬래시가 붙는 이스케이프 시퀀스(escape sequence: 컴퓨터와 주변장치의 상태 전환에 사용되는 문자)는 \a -> \x07 처럼 16진 아스키 코드를 사용
#제어 문자 26개
<\cA>부터 <\cZ>까지의 정규식을 사용하면 아스키 표 1~26번의 26개 제어 문자 중 하나와 일치시킬 수 있다. 아스키 표 27번의 이스케이프 제어 문자는 영어 알파벳 범위를 넘어가므로, \x1B
#7비트 문자 세트
<\x00> ~ <\x7F> 아스키 표 가로 행 세로 열 참고
#여러 문자 중 하나와 일치
16진 문자: [a-fA-F0-9]
비 16진 문자: [^a-fA-F0-9]
대괄호로 묶인 부분을 문자 클래스라고 한다. 문자 클래스는 안에 나열된 문자들 중 한 문자와 일치된다.
문자 클래스 외부에서는 12개의 구두 문자가 메타문자지만, 문자 클래스 내부에서는 오직 4개의 메타문자 \, ^, -, ] 만 특수 기능이 있다. Java나 .NET 스타일에서는 문자 클래스 내부에서 시작 대괄호 [도 메타문자로 인식되며, 그 외의 문자들은 문자 클래스 안에서 순수한 리터럴 문자로 인식함
'개인공부용1 > cs' 카테고리의 다른 글
디자인 패턴의 아름다움 (0) | 2024.07.14 |
---|---|
시작하세요! C# 12 프로그래밍 - 2부 (0) | 2024.07.14 |
혼자 공부하는 컴퓨터 구조 + 운영체제 (1) | 2024.06.18 |
Bresenham's line algorithm (0) | 2024.02.07 |
Do it! 자료구조와 함께 배우는 알고리즘 입문 : C 언어 편 (0) | 2024.01.29 |