Python 정규식에 대한 첫 소개
정규 표현식은 문자열이 우리가 설정한 문자 시퀀스와 일치하는지 확인하는 데, 즉 문자열이 특정 패턴과 일치하는지 확인하는 데 사용되는 특수 문자 시퀀스입니다.
Python은 버전 1.5부터 Perl 스타일 정규식 패턴을 제공하는 re 모듈을 추가했습니다. re 모듈은 Python 언어에 완전한 정규식 기능을 제공합니다.
다음은 예제를 통해 정규식을 단계별로 소개한 것입니다.
예를 들어 문자열에 특정 문자가 포함되어 있는지 또는 특정 문자가 포함되어 있는지 확인하려면 일반적으로 다음과 같이 내장 함수를 사용합니다.
# 设定一个常量 a = '两点水|twowater|liangdianshui|草根程序员|ReadingWithU' # 判断是否有 “两点水” 这个字符串,使用 PY 自带函数 print('是否含有“两点水”这个字符串:{0}'.format(a.index('两点水') > -1)) print('是否含有“两点水”这个字符串:{0}'.format('两点水' in a))
출력 결과는 다음과 같습니다.
是否含有“两点水”这个字符串:True 是否含有“两点水”这个字符串:True
그래서 우리는 어떻게 될까요? 정규식을 사용하시나요?
방금 언급했듯이 Python은 정규식의 모든 기능을 구현하는 re 모듈을 제공하므로 먼저 함수 중 하나를 사용해 보겠습니다.
re.findall(pattern, string[, flags])
이 함수는 문자열에서 일치하는 정규식 찾기를 구현합니다. 모든 하위 문자열이 형성됩니다. 구체적인 연산은 다음과 같습니다.
import re # 设定一个常量 a = '两点水|twowater|liangdianshui|草根程序员|ReadingWithU' # 正则表达式 findall = re.findall('两点水', a) print(findall) if len(findall) > 0: print('a 含有“两点水”这个字符串') else: print('a 不含有“两点水”这个字符串')
출력 결과:
['两点水'] a 含有“两点水”这个字符串
출력 결과에서 알 수 있듯이 내장 함수와 동일한 기능을 구현할 수 있지만 한 가지 강조해야 할 점은 다음과 같습니다. 위의 예는 정규식에 대한 이해를 돕기 위한 것입니다. 이 정규식이 작성된 방식은 의미가 없습니다. 왜 이런 말을 하는 걸까요?
파이썬에 내장된 함수를 이용하면 문제를 해결할 수 있기 때문에 불필요한 정규식을 사용할 필요가 없습니다. 또한 위 예의 정규식 설정은 정규식 규칙이 아닌 상수가 되므로 정규식의 핵심은 규칙에 있으므로 이는 의미가 없습니다.
그렇다면 정규 표현식의 규칙을 어떻게 작성할까요? 걱정하지 마세요. 간단한 것부터 시작해 보겠습니다. 문자열에서 모든 소문자를 찾아보세요. 먼저 findall 함수의 첫 번째 매개변수에 정규식 규칙을 작성합니다. 여기서 [a-z]는 모든 소문자와 일치하고 두 번째 매개변수는 일치할 문자열만 채워야 합니다. 세부 사항은 다음과 같습니다:
import re # 设定一个常量 a = '两点水|twowater|liangdianshui|草根程序员|ReadingWithU' # 选择 a 里面的所有小写英文字母 re_findall = re.findall('[a-z]', a) print(re_findall)
출력 결과:
['t', 'w', 'o', 'w', 'a', 't', 'e', 'r', 'l', 'i', 'a', 'n', 'g', 'd', 'i', 'a', 'n', 's', 'h', 'u', 'i', 'e', 'a', 'd', 'i', 'n', 'g', 'i', 't', 'h']
이런 방식으로 문자열의 모든 소문자를 얻습니다.