[python] Python Regex는 즉시 그룹을 대체합니다.
정규식 구문을 사용하여 모든 그룹을 직접 대체하는 방법이 있습니까?
일반적인 방법 :
re.match(r"(?:aaa)(_bbb)", string1).group(1)
그러나 나는 다음과 같은 것을 성취하고 싶다.
re.match(r"(\d.*?)\s(\d.*?)", "(CALL_GROUP_1) (CALL_GROUP_2)")
방금 정규식이 캡처 한 그룹에서 새 문자열을 즉시 작성하고 싶습니다.
답변
보세요 re.sub
:
result = re.sub(r"(\d.*?)\s(\d.*?)", r"\1 \2", string1)
이것은 파이썬의 정규식 대체 (바꾸기) 함수입니다. 대체 문자열은 소위 역 참조 (백 슬래시, 그룹 번호)로 채워질 수 있으며 이는 그룹과 일치하는 것으로 대체됩니다. 그룹은 group(...)
함수 와 동일하게 계산됩니다. 즉 1
, 괄호를 열어 왼쪽에서 오른쪽으로 시작합니다.
답변
받아 들여지는 대답은 완벽합니다. 이 구문을 사용하여 그룹 참조를 더 잘 얻을 수 있다고 추가합니다.
r"\g<1> \g<2>"
대체 문자열. 이렇게하면 그룹 뒤에 숫자가 올 수있는 구문 제한을 피할 수 있습니다. 다시 말하지만, 이것은 모두 문서에 존재하며 새로운 것은 아니며 때로는 첫눈에 알아 내기가 어렵습니다.