Python re.sub 역방향 참조 실현

re 모듈 은 Python 표준 라 이브 러 리 에서 정규 표현 식 을 처리 하 는 모듈 로 re 를 이용 합 니 다. 모듈 은 정규 표현 식 을 편리 하 게 이용 하여 문자열 의 일치,교체 등 을 실현 할 수 있 습 니 다.
match 그룹
Python re 모듈 에서 match 제공 함수,문자열 에서 지정 한 정규 표현 식 규칙 과 일치 합 니 다.예 를 들 어'Isaac Newton,physist'와 일치 하려 면 아이 작 뉴턴 은 정규 표현 식\w+\w+를 사용 할 수 있 습 니 다. ,실행 결 과 는 다음 과 같 습 니 다.

>>> m = re.match("\w+ \w+", "Isaac Newton, physicist")
>>> m
<re.Match object; span=(0, 12), match='Isaac Newton'>
re.match 의 첫 번 째 매개 변 수 는 지정 한 정규 표현 식 규칙 이 고 두 번 째 매개 변 수 는 일치 하 는 문자열 입 니 다.정규 표현 식 규칙\w+ 연속 문자 와 일치 하 는 것 을 표시 합 니 다.일치 하 는 문자 의 수량 이 1 보다 많 습 니 다.\w+ \w+ 두 단락 의 연속 문자 와 일치 하고 두 단락 의 문자 중간 을 빈 칸 으로 구분 합 니 다.
match 사용 하기 일치 하 는 결 과 를 실행 할 때 그룹 을 나 눕 니 다. ,match 를 통과 할 수 있 습 니 다. 결 과 를 되 돌려 주 는 group() 인터페이스 보기 그룹 결과

>>> m.group(0)
'Isaac Newton'
기본적으로 match 하나의 그룹 만 생 성 됩 니 다.0 번 째 그룹 으로 일치 하 는 내용 을 표시 합 니 다.위의 예 에 대해 0 번 째 그룹 은\w+\w+입 니 다. 일치 하 는 전체 내용,즉 Issac Newton 입 니 다. 。
정규 표현 식 의 괄호 사용 하기() 일치 하 는 그룹 을 수 동 으로 지정 할 수 있 습 니 다.하면,만약,만약... 뉴턴 두 개의 그룹 으로 나 누 면 정규 표현 식 을(\w+)(\w+)로 바 꿀 수 있 습 니 다. :

>>> m = re.match("(\w+) (\w+)", "Isaac Newton, physicist")
에서(\w+)(\w+) 이 정규 표현 식 에서 두 개의 그룹 을 지 정 했 습 니 다.이 두 그룹 이 일치 하 는 내용 은 모두\w+입 니 다. ,그리고 두 그룹 사 이 를 빈 칸 으로 구분 합 니 다.
groups()를 사용 하면 일치 하 는 결과 의 모든 그룹 을 볼 수 있 습 니 다. :

>>> m.groups()
('Isaac', 'Newton')
group()도 사용 할 수 있 습 니 다. 인터페이스 에서 각각 그룹 을 봅 니 다.그룹(0) 전체 일치 결 과 를 표시 합 니 다.group(1) 일치 하 는 결과 의 첫 번 째 그룹,group(2) 두 번 째 그룹 을 나타 내 는 것 으로 유추 합 니 다.

>>> m.group(0)
'Isaac Newton'
>>> m.group(1)
'Isaac'
>>> m.group(2)
'Newton'
re.sub 일치 및 교체
re.match() 함수 가 정규 표현 식 의 일치 인 터 페 이 스 를 제공 합 니 다.re.sub() 정규 표현 식 과 일치 할 뿐만 아니 라 문자열 의 결 과 를 바 꾸 어 새로운 문자열 을 만 들 수 있 습 니 다.
예 를 들 어 문자열 중(\w+)(\w+) 일치 하 는 결 과 를 Albert Einstein 으로 바 꿉 니 다. ,이렇게 쓸 수 있다.

>>> re.sub("(\w+) (\w+)", "Albert Einstein", "Isaac Newton, physicist")
'Albert Einstein, physicist'
re.sub 에서 첫 번 째 매개 변 수 는 일치 하 는 정규 표현 식 을 표시 하고 두 번 째 매개 변 수 는 교체 표현 식 을 표시 하 며 세 번 째 매개 변 수 는 원본 문자열 을 표시 합 니 다.
이 대체 표현 식 은 수 동 으로 지정 한 새 문자열 Albert Einstein 입 니 다. ,그 는 원본 문자열 의 내용 과 전혀 관련 이 없다.원본 문자열 의 내용 을 다시 사용 하려 면 re.sub 를 사용 해 야 합 니 다. 의 역방향 인용 기능 이 생 겼 다.
역방향 참조
역방향 참조 란 교체 결 과 를 지정 하 는 과정 에서 원본 문자열 의 일치 하 는 내용 을 참조 할 수 있 습 니 다.예 를 들 어(\w+)(\w+) 원본 문자열 에 Isaac Newton 이 일치 합 니 다. ,일치 하 는 결 과 를 이용 하여 결 과 를 First Name:Isaac,LastName:Newton 으로 변경 합 니 다. 。
인용 이 필요 하 다 면 일치 하 는 내용 을 표시 할 수 있 는 표현 식 이 있어 야 합 니 다.마침 re.match 와 일치 하 는 결과 도 있 습 니 다. 같은 그룹 입 니 다.따라서 교체 표현 식 에서 그룹의 결 과 를 참조 하면 됩 니 다.인용 방식 은 다음 과 같은 몇 가지 가 있다.
  • umber :예컨대 ,일치 하 는 결과 의 첫 번 째 그룹,즉 예 중의 Isaac 를 나타 낸다 부분
  • \g :예 를 들 어\g<1> ,우산 표현법 과 마찬가지 로 일치 하 는 결과 의 첫 번 째 그룹 을 대표 한다.우산 표기 법 비교,\g 불 의 를 모면 하 다.하면,만약,만약... 첫 번 째 그룹 을 일치 시 켰 습 니 다.  Isaac Isaac 0 으로 변경 ,그러면 ,여기 서 본 의 는 첫 번 째 그룹 에 0 을 더 하 는 것 을 나타 낸다. ,하지만 프로그램 은 10 번 째 그룹 으로 인식 된다.사용\\g \g<1>0 으로 만 쓰 면 됩 니 다. 됐다.
  • 시작 예 로 돌아 가서 일치 하 는 결 과 를 Isaac Newton 을 First Name:Isaac,LastName:Newton 으로 바 꾸 면 다음 표현 식 으로 구현 할 수 있 습 니 다.
    
    >>> re.sub("(\w+) (\w+)", "FirstName: \g<1>, LastName: \g<2>", "Isaac Newton, physicist")
    'FirstName: Isaac, LastName: Newton, physicist'
    
    레 퍼 런 스
     re ― Regular expression operations
     Python re(gex)? -- Groupings and backreferences
    파 이 썬 re.sub 의 역방향 인용 실현 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 파 이 썬 re.sub 의 역방향 인용 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

    좋은 웹페이지 즐겨찾기