이 글에서는 주로 정규 표현식과 관련된 문제를 소개하는 python에 대한 관련 지식을 제공합니다. 정규 표현식(Regular Expression)은 정규적인 정보를 나타낼 수 있는 문자열입니다. 모든 사람에게 도움이 되기를 바랍니다.
추천 학습: python 비디오 튜토리얼
정규 표현식(정규 표현식)은 문자열이며, 정규적인 정보를 나타낼 수 있습니다. Python에는 정규식 정보를 찾고, 추출하고, 바꿀 수 있는 정규식 모듈이 함께 제공됩니다. 만 명 중에서 한 사람을 찾기는 어렵지만, 만 명 중에서 아주 '특징'이 있는 사람 한 명을 찾는 것은 쉽습니다. 가령 녹색 피부에 키가 3미터나 되는 사람이 만명 중에 있어도 다른 사람들이 한 눈에 알아볼 수 있는 사람이 있다고 가정해 보십시오. 이 "검색" 프로세스를 정규식에서는 "일치"라고 합니다. 프로그램 개발에서 컴퓨터 프로그램이 큰 텍스트에서 필요한 내용을 찾도록 하려면 정규식을 사용할 수 있습니다. 정규식을 사용하려면 다음 단계를 따르세요.
(1) 패턴을 찾아보세요.
(2) 규칙을 표현하려면 일반 기호를 사용하세요.
(3) 정보를 추출합니다.
점 은 개행 문자를 제외한 모든 문자 를 대체할 수 있습니다. 여기에는 영어 문자, 숫자, 중국어를 포함하되 이에 국한되지 않습니다. 문자, 영어 구두점 및 중국어 구두점.
별표 는 앞에 있는 하위 표현식 ( 일반 문자 , 또 다른 또는 여러 정규식 기호)을 0회에서 무한대까지 나타낼 수 있습니다.
위의 모든 항목이 허용됩니다. (별표는 이전 표현식을 나타냅니다.)
점은 줄 바꿈이 아닌 문자를 나타내고 별표는 일치함을 나타냅니다. 그 앞의 문자가 0번 또는 여러 번 나타납니다. 따라서 ".*"는 임의의 길이의 문자열을 여러 번 일치시키는 것을 의미합니다.
위의 사항은 모두 허용됩니다.
이는 "such"와 "ha" 사이에 "줄 바꿈을 제외한 모든 문자"가 나타난다는 의미입니다.
물음표는 0번 또는 1번 앞의 하위 표현식을 나타냅니다. 여기서 물음표는 영어 물음표입니다.
위 항목 모두 사용할 수 있습니다.
조합 후 사용법:
위의 모든 항목을 사용할 수 있습니다.
참고: ".*?"와 ".*"의 차이점
. *? 요구 사항을 충족할 수 있는 가장 짧은 문자열을 일치시키겠다는 의미입니다.
한 문장으로 요약하면 다음과 같습니다.
① ".*": Greedy 모드, 조건에 맞는 가장 긴 문자열을 얻습니다.
②".*?": 비 욕심 모드, 조건을 충족하는 가장 짧은 문자열을 얻습니다.
문자열에서 내용의 일부를 "추출"합니다.
다음 문자열이 있습니다.
비밀번호 왼쪽에 영어 콜론이 있는 것을 볼 수 있습니다. 여기, 오른쪽에 영어 콜론이 있습니다. "you"를 뜻하는 한자가 있습니다. 정규식을 구성하는 경우: .*? 결과는 다음과 같습니다.
그러나 콜론과 한자 "you"는 비밀번호의 일부가 아닙니다. "12345abcde"만 원하는 경우 대괄호를 사용하여
을 얻어야 합니다.
정규식에서는 물음표, 별표, 중괄호, 대괄호, 괄호 등 많은 기호가 특별한 의미를 갖습니다. 특수 기호를 일반 기호로, 일반 기호를 특수 기호로 바꾸려면 백슬래시를 다른 문자와 함께 사용해야 합니다.
"d"는 정규식에서 한 자리 숫자를 나타내는 데 사용됩니다.
두 개의 숫자를 추출하려면 dd를 사용하고, 3개의 숫자를 추출하려면 ddd를 사용하면 됩니다. 하지만 이 숫자가 몇 자리인지 모른다면 어떻게 될까요? 임의의 숫자를 나타내려면 * 기호를 사용해야 합니다.
모두 다음 정규식으로 표현할 수 있습니다.
Python의 정규식 모듈 이름은 "re"이며, 이는 "정규식" 약어의 첫 글자입니다. Python에서는 이 모듈을 사용하기 전에 먼저 가져와야 합니다. 가져온 문은 다음과 같습니다.
import re
Python의 정규식 모듈에는 list 형식으로 요구 사항을 충족하는 모든 문자열을 반환할 수 있는 findall 메서드가 포함되어 있습니다.
findall의 함수 프로토타입은 다음과 같습니다.
re.findall(pattern,string,flags=0)
pattern은 정규식을 나타내고, string은 원래 문자열을 나타내고, flags는 일부 특수 함수 플래그를 나타냅니다. findall의 결과는 일치하는 모든 결과를 포함하는 목록입니다. 일치하는 결과가 없으면 빈 목록이 반환됩니다.
특정 내용을 추출해야 할 경우 관련 없는 정보가 나오지 않도록 괄호를 사용하여 내용을 묶어주세요. "(.*? )"가 여러 개 포함된 경우 어떻게 반환하나요? 그림 3-2에서 볼 수 있듯이 반환되는 것은 여전히 목록이지만 목록의 요소는 튜플이 됩니다. 튜플의 첫 번째 요소는 계좌 번호이고 두 번째 요소는 비밀번호입니다.
함수 프로토타입에 플래그 매개변수가 있습니다. 이 매개변수는 생략될 수 있습니다. 생략하지 않으면 대소문자 무시, 개행 무시 등과 같은 일부 보조 기능이 있습니다.
여기서는 설명을 위해 줄바꿈 무시를 예로 들었습니다. 줄바꿈을 무시하려면 "re.S" 플래그를 사용해야 합니다.
일치 결과에 "n" 기호가 표시되지만 아무것도 얻지 못하는 것보다는 낫습니다. 나중에 데이터를 정리할 때 내용의 줄 바꿈을 바꿀 수 있습니다.
search()의 사용법은 findall()과 동일하지만 search()는 요구 사항을 충족하는 첫 번째 문자열만 반환합니다. 요구 사항과 일치하는 항목을 찾으면 검색을 중지합니다. 이는 초대형 텍스트에서 첫 번째 데이터만 찾는 데 특히 유용하며, 이는 프로그램의 실행 효율성을 크게 향상시킬 수 있습니다.
search()의 함수 프로토타입은 다음과 같습니다.
결과적으로 일치에 성공하면 정규식 개체이고, 일치하는 데이터가 없으면 None입니다.
일치하는 결과를 얻으려면 .group() 메서드를 사용하여 내부 값을 가져와야 합니다.
.group()의 매개변수가 1인 경우에만 정규식에서 괄호 안의 결과가 인쇄됩니다.
.group()의 매개변수는 정규 표현식의 최대 괄호 수를 초과할 수 없습니다. 매개변수 1은 첫 번째 대괄호의 내용을 읽는 것을 의미하고, 매개변수 2는 두 번째 대괄호의 내용을 읽는다는 의미입니다.
(참고로 사진에 있는 것은 findall이 아닙니다.)
re.findall()에는 re.compile() 함수가 포함되어 있으므로 re.compile(을 사용할 필요가 없습니다. ).
있습니다 대괄호 안의 다른 문자가 될 수 있습니다.
구체적인 영향은 아래 그림을 참조하세요.
괄호 안에 다른 일반 문자가 있으면 이러한 일반 문자가 얻은 결과에 나타납니다.
추천 학습: python 비디오 튜토리얼
위 내용은 Python 정규식 지식 포인트 요약 및 구성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!