>  기사  >  백엔드 개발  >  파이썬 정규식【1】

파이썬 정규식【1】

黄舟
黄舟원래의
2017-02-07 16:28:531345검색

이 기사에서는 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(&#39;(?<=vlan).*&#39;,vlan).group()
>>> ljds
&#39; 612&#39;

자, 이것을 배운 후 이전에 라우터 이름을 캡처한 정규식을 살펴보십시오:

DeviceName = re.search(&#39;.*(?=#show run)&#39;,telreply).group()

위는 Python 정규식[1]의 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.