Pythhon 정규 표현식을 사용하여 임의의 문자열 그룹 추출/이름 지정 그룹 사용
9014 단어 Python
개시하다
정규 표현식 사용하셨나요?!!!
제가 마지막으로 사용한 게 한 달 전쯤이었죠.
필요할 때 오시면 열심히 쓰실 거예요.
이런 정규 표현식이지만 잘 사용하면 임의의 문자열을 추출할 수 있다는 느낌을 준다.
TLDL
문자열을 추출할 때 이름 그룹을 사용하십시오!
>> text = "environ/house-food/apple-pie02.fbx"
>> import re
>> reg_text = r'(?P<main>(chara|environ))/(?P<sub>[^-/]*)-?(?P<sub_sub>[^/]*)/(?P<filling>[^-]*)-pie'
>> match = re.search(reg_text, text)
>> print(match.groupdict())
{'main': 'environ', 'sub': 'house', 'sub_sub': 'food', 'filling': 'apple'}
정규 표현식의 기본
우선 정규 표현식에 대해 기본적이고 적당한 일치를 한다.
#! python3
import re
def main():
# NOTE: どうでもいいですけど、正規表現のサンプルでアップルパイってよく見かけますよね。
text = "environ/house-food/apple-pie02.fbx"
match_obj= re.search(r'pie', text)
if match_obj:
print("ヒットしたよ!")
else:
print("ヒットしないよ!")
if __name__ == '__main__':
main()
뭐, 그렇습니다.아주 간단하네요.만약 속도가 구한다면 시작이 일치할 때
re.match에 사용하거나 교체하고 싶을 때re.sub에 사용할 수 있다어쨌든 정규 표현식을 사용하는 것은 문제가 없을 것이다.1
그럼 앞의 문자열
pie을 어떻게 추출합니까?나는 각양각색의 문자열을 삭제한 후에 꺼내고 싶다.
그런데 상대를 많이 얻었을 때는?예를 들어 단숨에
apple,environ와house를 얻고 싶은 경우?이럴 때 사용할 수 있는 것은 단체다.
공식 문서를 읽어봅시다.
정규 표현식의 문법
(중략)
(...)
괄호로 묶인 정규 표현식과 일치하며 조합의 시작과 끝을 표시합니다.
그룹의 내용은 다음과 같습니다. 성냥을 실행한 후에 회수하거나, 이 문자열에서 나중에\number 특수 서열로 일치할 수 있습니다.
"('또는')"를 일치시키려면 (지원) 또는 문자 카테고리를 사용하여 [, [)]를 둘러쌉니다.
re-정규 표현식 작업 - Python 3.9.1 문서에 따라
...어떻게 쓰는지 모르겠어..
그래서 샘플을 꺼내 보겠습니다.
그룹 작업
#! python3
import re
def main():
text = "environ/house-food/apple-pie02.fbx"
match_obj= re.search(r'([^/-]*)-?pie)', text)
print(match_obj.groups())
if __name__ == '__main__':
main()
객체 일치
food를 통해귀일화 정규 표현식과 관련된 문자열 목록을 얻을 수 있습니다.
따라서 상기
apple에서 꺼내기match_obj.groups(), text와 environ를 고려하여#! python3
import re
def main():
text = "environ/house-food/apple-pie02.fbx"
match = re.search(r'([^/-]*)/([^/-]*)-?([^/-]*)/([^/-]*)-?pie', text)
if match:
print(match.groups())
if __name__ == '__main__':
main()
그렇다면..
잘 끝냈네요!
그런대로 편리한 편이야!
house 말고 food 이런 거 갖고 싶어요.정규 표현은 자주 사용하고
apple 필요한 부분만 있으면 된다고 생각합니다.그때가 바로 이 "이름이 있는 그룹"!
예와 같이 공식 문서를 읽어 보세요.
정규 표현식의 문법
(중략)
(?P
일반적인 괄호와 유사하지만, 이 조합이 일치하는 하위 문자열은 기호 그룹 이름name으로 접근할 수 있습니다.
그룹 이름은 유효한 Python 식별자여야 하며 각 그룹 이름은 정규 표현식에 한 번 정의되어야 합니다.
기호 그룹은 이름이 없는 것처럼 번호가 지정된 그룹입니다.
이름 지정 그룹 사용
뭐, 일단 쓰면 알 수 있는 정신으로 쓰자.
#! python3
import re
def main():
text = "environ/house-food/apple-pie02.fbx"
match = re.search(r'(?P<main>[^/-]*)/(?P<sub>[^/-]*)-?(?P<sub_sub>[^/-]*)/(?P<filling>[^/-]*)-?pie', text)
if match:
print(match.groupdict())
if __name__ == '__main__':
main()
객체 일치list를 통해이름이 붙은 그룹 사전을 얻을 수 있습니다.
괜찮은 것 같아!
끝맺다
아무 생각도 못했어..
아주 편리하군요!
추기: 속도를 의식한다면 for환에서 같은 정규 표현식을 사용할 때 for 이외
dict에서 사용하면 조금 빠르다. ↩ Reference
이 문제에 관하여(Pythhon 정규 표현식을 사용하여 임의의 문자열 그룹 추출/이름 지정 그룹 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/takumi_akashiro/items/44412eb9db623d136bf1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)