본문 바로가기

언어/Python

[ Python ] 정규 표현식에서 패턴 수량자에 대해서 알아보기

반응형

파이썬 정규 표현식에서 패턴 수량자는 특정 패턴이 반복되는 횟수를 지정하는 데 사용됩니다. 각 수량자에 대한 예제를 통해 그 사용 방법을 자세히 알아보겠습니다.

1. * (Asterisk)

앞의 문자가 0번 이상 반복됨을 의미합니다.

import re

pattern = r"ab*c"
string = "ac abc abbc abbbc"
matches = re.findall(pattern, string)
print(matches)  # Output: ['ac', 'abc', 'abbc', 'abbbc']

2. + (Plus)

앞의 문자가 1번 이상 반복됨을 의미합니다.

import re

pattern = r"ab+c"
string = "ac abc abbc abbbc"
matches = re.findall(pattern, string)
print(matches)  # Output: ['abc', 'abbc', 'abbbc']

3. ? (Question Mark)

앞의 문자가 0번 또는 1번 나타남을 의미합니다.

import re

pattern = r"ab?c"
string = "ac abc abbc"
matches = re.findall(pattern, string)
print(matches)  # Output: ['ac', 'abc']

4. {n} (Exactly n times)

앞의 문자가 정확히 n번 반복됨을 의미합니다.

import re

pattern = r"ab{2}c"
string = "abc abbc abbbc"
matches = re.findall(pattern, string)
print(matches)  # Output: ['abbc']

5. {n,} (At least n times)

앞의 문자가 n번 이상 반복됨을 의미합니다.

import re

pattern = r"ab{2,}c"
string = "abc abbc abbbc"
matches = re.findall(pattern, string)
print(matches)  # Output: ['abbc', 'abbbc']

6. {n,m} (Between n and m times)

앞의 문자가 n번 이상 m번 이하 반복됨을 의미합니다.

import re

pattern = r"ab{2,3}c"
string = "abc abbc abbbc abbbbc"
matches = re.findall(pattern, string)
print(matches)  # Output: ['abbc', 'abbbc']

7. *? (Non-Greedy Asterisk)

앞의 문자가 0번 이상 반복되지만, 가능한 한 적게 반복됨을 의미합니다.

import re

pattern = r"a.*?c"
string = "ac abc abbc"
matches = re.findall(pattern, string)
print(matches)  # Output: ['ac', 'abc', 'abbc']

8. +? (Non-Greedy Plus)

앞의 문자가 1번 이상 반복되지만, 가능한 한 적게 반복됨을 의미합니다.

import re

pattern = r"a*?.+?c"
string = "ac abc abbc"
matches = re.findall(pattern, string)
print(matches)  # Output: ['ac', 'abc', 'abbc']

9. ?? (Non-Greedy Question Mark)

앞의 문자가 0번 또는 1번 반복되지만, 가능한 한 적게 반복됨을 의미합니다.

import re

pattern = r"ab??c"
string = "ac abc abbc"
matches = re.findall(pattern, string)
print(matches)  # Output: ['ac', 'abc']

10. {n,m}? (Non-Greedy Braces)

앞의 문자가 n번 이상 m번 이하 반복되지만, 가능한 한 적게 반복됨을 의미합니다.

import re

pattern = r"ab{2,3}?c"
string = "abc abbc abbbc abbbbc"
matches = re.findall(pattern, string)
print(matches)  # Output: ['abbc', 'abbbc']

이 예제들은 정규 표현식에서 다양한 패턴 수량자가 어떻게 사용되는지를 보여줍니다. 파이썬의 re 모듈을 사용하여 이러한 패턴을 문자열에서 검색하거나 조작할 수 있습니다.

반응형