Python 정규식: 문자열을 검색하고 바꾸는 방법
Regex는 Python에서 다양한 작업을 수행하는 데 사용할 수 있습니다. 검색 및 바꾸기 작업을 수행하고, 텍스트의 패턴을 바꾸고, 문자열에 특정 패턴이 포함되어 있는지 확인하는 데 사용됩니다. 하지만 오늘은 정규식을 사용하여 검색 및 바꾸기 작업을 수행하는 방법을 배웁니다.
목차
파이썬 정규식 바꾸기
Python에는 re라는 내장 모듈이 있어 검색 및 교체에 도움이 됩니다. re를 사용하려면 코드 시작 부분에서 모듈을 가져와야 합니다.
import re
이제 regex를 사용한 검색 및 바꾸기 작업에 대해 알아봅니다.
검색 및 교체를 위한 정규식
regex 메서드는 문자열을 검색한 다음 다른 값으로 바꿉니다. re 모듈의 Python re.sub() 함수를 사용합니다.
통사론:
re.sub(pattern, replacement, string, count=0, flags=0)
우선, 이 모든 매개변수가 의미하는 바를 이해하겠습니다.
패턴: Python에서 주어진 문자열 내에서 검색하고 찾으려는 정규식입니다.
문자열: 작업을 수행하려는 지정된 문자열을 포함하는 변수입니다.
개수: 패턴이 문자열에서 여러 번 발생하는 경우 패턴을 바꾸려는 횟수입니다. 기본값은 0입니다. 선택 사항입니다.
플래그: 정규식 플래그는 선택 사항입니다.
입력:
import re
str = "[email protected]"
print(re.sub("[a-z]*@", "abc@", str))
산출:
[email protected]
정규식을 사용하여 여러 패턴 바꾸기
정규식을 사용하여 한 번에 여러 패턴을 바꾸기 위해 정규식을 사용할 수 있습니다. 이는 다음 구문을 사용하여 쉽게 수행할 수 있습니다.
통사론:
re.sub(pattern_1 | pattern_2, replacement, string, count=0, flags=0)
입력:
import re
str = "Joe-Kim Ema Max Aby Liza"
print(re.sub("(\s) | (-)", ", ", str))
산출:
"Joe, Kim, Ema, Max, Aby, Liza"
정규식을 사용하여 여러 패턴을 여러 교체로 바꾸기
이제 여러 패턴을 대체하고 싶지만 다른 대체로 정규식을 사용할 수도 있습니다. 다음 예제에서 볼 수 있는 약간의 수정으로 수행할 수 있습니다.
입력:
import re
def convert_case(match_obj):
if match_obj.group(1) is not None:
return match_obj.group(1).lower()
if match_obj.group(2) is not None:
return match_obj.group(2).upper()
str = "jOE kIM mAx ABY lIzA"
print(re.sub(r"([A-Z]+) | ([a-z]+)", convert_case, str))
이 예에서 문자열에는 교체해야 하는 대문자와 소문자가 포함되어 있습니다. 대문자를 소문자로 또는 그 반대로 바꿔야 합니다.
그러기 위해 두 개의 그룹을 만든 다음 교체를 위한 기능을 추가합니다.
산출:
"Joe Kim MaX aby LiZa"
마무리 생각
Python에서 문자열을 바꾸려면 regex sub() 메서드가 사용됩니다. 교체된 문자열을 반환하는 re 모듈의 내장 Python 메서드입니다. remodule를 가져오는 것을 잊지 마십시오. 이 메서드는 문자열에서 패턴을 검색한 다음 지정된 새 식으로 바꿉니다. 더 많은 Python 개념here에 대해 배울 수 있습니다.
Reference
이 문제에 관하여(Python 정규식: 문자열을 검색하고 바꾸는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/hrishikesh1990/python-regex-how-to-search-and-replace-strings-58a5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)