이 기사에서는 Python의 정규식에 대해 설명합니다.
더 이상 고민하지 말고 가장 간단한 것부터 시작해 보겠습니다.
'.': 줄 바꿈을 제외한 모든 단일 문자(점)와 일치할 수 있습니다.
'*'는 이전 하위 표현식과 0번 이상 일치할 수 있습니다(별표만 사용).
따라서 위의 두 '.*'(점 별표) 조합은 개행 문자를 제외한 모든 항목과 일치합니다.
'+': 한 번 이상 반복합니다.
'?': 0회 또는 1회 반복합니다.
'd': 숫자와 일치합니다. [0-9]와 동일합니다.
'w'는 밑줄을 포함한 모든 단어 문자와 일치합니다. '[A-Za-z0-9_]'와 동일합니다.
'/s'는 공백, 탭, 폼 피드 등을 포함한 모든 공백 문자와 일치합니다. [ fnrtv]
'^'와 동일하며 입력 문자열의 시작과 일치합니다.
'$'는 입력 문자열의 끝과 일치합니다.
위의 내용은 매우 일반적으로 사용되는 것입니다. 물론 더 일반적으로 사용되는 것들이 많이 있으므로 필요할 때 설명서를 확인하세요.
이 설명은 직관적이지 않으므로 그냥 실험해 보세요. Python에서 정규 표현식을 사용하는 것은 매우 간단합니다. re를 직접 가져오기만 하면 됩니다.
>>> import re
>>>
먼저 시도해 보세요. 모두 일치:
>>> vlan = 'switchport access vlan 612' >>> ljds = re.search('.*',vlan).group() >>> ljds 'switchport access vlan 612'
숫자 일치를 다시 시도하세요:
>>> ljds = re.search('\d',vlan).group() >>> ljds '6'
'/d'는 숫자와 일치하므로 여기서 '612'를 일치시키려면 3개 숫자의 경우 '{3}'을 추가할 수 있습니다:
>>> ljds = re.search('\d{3}',vlan).group() >>> ljds
'612'
마찬가지로 13자(공백 포함)를 일치시키려면:
>>> ljds = re.search('[\w\s]{13}',vlan).group() >>> ljds 'switchport ac'
여기에도 있습니다. 정규 표현식의 수량자에는 탐욕스러운 모드와 비탐욕적인 모드가 포함되어 있습니다. Greedy는 최대값을 취하고 가능한 한 많은 일치 항목을 일치시키는 것입니다. Non-greedy는 그 반대입니다(기본값은 Greedy 모드입니다). 예:
위 내용은 13자 일치입니다. 2~10자 일치하도록 작성된 경우 '[ws]{2,10}'라고 쓰고 2 또는 10과 일치하는지 여부를 지정합니다. 하나? 기본값은 그리디 모드이므로 최대값과 일치합니다:
>>> ljds = re.search('[\w\s]{2,10}',vlan).group() >>> ljds 'switchport'
비탐욕 모드, 즉 최소 일치로 전환하려면 수량자 뒤에 물음표 '?'를 추가합니다.
>>> ljds = re.search('[\w\s]{2,10}?',vlan).group() >>> ljds 'sw'
다음으로 "capture"를 소개하겠습니다:
(exp): Match exp.
(?=exp): exp 앞의 위치를 일치시킵니다.
(?b8d20919af3ef98d1cc3936ce5c443d7>> vlan = 'switchport access vlan 612'
가장 기본:
>>> ljds = re.search('(access)',vlan).group() >>> ljds 'access'
'access' 앞의 문자 일치:
>>> ljds = re.search('.*(?=access)',vlan).group() >>> ljds 'switchport '
는 'vlan' 뒤의 모든 문자와 일치합니다:
>>> ljds = re.search('(?<=vlan).*',vlan).group() >>> ljds ' 612'
자, 이것을 배운 후 이전에 라우터 이름을 캡처한 정규식을 살펴보십시오:
DeviceName = re.search('.*(?=#show run)',telreply).group()
위는 Python 정규식[1]의 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!