정규식 캡처 그룹
4561 단어 regextipstodayilearned
TIL 실제 매칭 중에도 사용할 수 있습니다 😮.
그룹을 캡처하는 것이 도대체 무엇입니까?
이 메서드 호출이 포함된 코드 조각이 제공됩니다.
doSomething(firstArg, secondArg)
인수를 바꿔야 하는 다른 메서드를 사용하기 위해 대체하려면 다음과 같은 정규식을 사용하면 됩니다.
doSomething\((.+),\s(.+)\)
둥근 괄호 안의 식 부분(이스케이프된 부분 제외)은 캡처 그룹입니다. 예를 들어 한정 기호를 적용하는 것과 같이 래핑된 식을 전체적으로 처리하는 데 사용할 수 있습니다.
또한 캡처 그룹을 사용하면 정규식 일치 부분을 쉽게 추출할 수 있습니다.
이전 예에서 경기 후 위치별로 추출된 그룹을 참조할 수 있습니다.
따라서 그룹 1은
firstArg
이고 그룹 2는 secondArg
입니다.내 편집기가 정규식 대체를 지원하거나 작업을 자동화하기 위해 일부 스크립트를 작성하는 경우 다음과 같이 메서드를 대체할 수 있습니다.
doSomethingElse($2, $1)
결과적으로
doSomethingElse(secondArg, firstArg)
(올바른 구문은 실제로 사용 중인 도구에 따라 다릅니다.)
분명히 그것에 더 많은 것이 있습니다!
이런 종류의 대체는 정말 멋지지만 캡처 그룹은 그보다 더 강력할 수 있습니다! 🚀
문자열의 일부가 이미 일치된 다른 부분과 일치하는지 확인하기 위해 일치 자체 중에 사용할 수도 있습니다.
예를 들어 문자열이 중간에 문자열을 허용하는 동일한 숫자 시퀀스로 시작하고 끝나는지 확인하려면 다음과 같이 할 수 있습니다.
(\d+)[A-Za-z]+\1
첫 번째이자 유일한 캡처링 그룹
(\d+)
은 모든 숫자 시퀀스와 일치하고 [A-Za-z]+
표현식은 문자 시퀀스와 일치합니다.마법은
\1
식에서 발생합니다. 식의 첫 번째 캡처링 그룹을 참조하여 문자열의 이 마지막 부분이 해당 그룹과 일치하는지 확인하는 방법입니다. 숫자는 캡처 그룹의 번호에 해당합니다.이 정규식을 사용하여 다음과 같은 문자열을 확인할 수 있습니다.
123HelloWorld123
보다 현실적인 시나리오는 생성 및 업데이트 날짜를 보유한 레코드가 있는 csv 파일일 수 있습니다.
name, created, updated
record_1, 2020-04-10, 2020-04-21
record_2, 2020-04-11, 2020-04-11
record_3, 2020-04-12, 2020-04-22
record_4, 2020-04-13, 2020-04-13
record_5, 2020-04-14, 2020-04-20
record_6, 2020-04-15, 2020-04-16
record_7, 2020-04-16, 2020-04-16
생성 날짜와 업데이트 날짜가 동일한 레코드를 찾으려는 경우 캡처 그룹을 사용할 수 있습니다.
정규식은 다음과 같습니다.
.+?,\t(\d{4}-\d{2}-\d{2}),\t\1
읽기 쉽지는 않지만 아주 간단합니다. 중요한 비트는 날짜와 일치하는 둥근 괄호 안의 캡처 그룹과 이를 호출하는
\1
입니다. 정규식은 이 두 요소가 실제로 동일한 경우에만 일치합니다.텍스트 편집기에서 검색을 실행하면 날짜가 일치하는 모든 줄이 강조 표시됩니다.
이것들은 간단한 예이고 더 복잡한 일치가 가능하지만 내가 이미 정말 유용하다고 생각했던 정규 표현식의 기능이 실제로 훨씬 더 강력하다는 사실에 정말 놀랐습니다!
Reference
이 문제에 관하여(정규식 캡처 그룹), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/markomannux/on-regex-capturing-groups-2pe2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)