정규 표현식 포획 그룹 사용하기
나는 줄곧 정규 표현식을 즐겨 사용했다. 정규 표현식의 매우 중요한 개념은'정규 표현식 포획 그룹'이다.
때때로 문자열에서 우리가 검색하는 패턴이 여러 번 나타날 수 있습니다.이 정규 표현식을 수동으로 반복하는 것은 시간을 낭비하는 것이다."RegEx 캡처 그룹"을 사용하는 것이 더 나은 하위 문자열을 반복하는 시기를 지정합니다.
👉 괄호()는 중복된 하위 문자열을 찾는 데 사용됩니다.우리는 중복된 정규 표현식을 괄호 사이에 두기만 하면 된다.
👉 이것은 일치하는 일부분을 결과 그룹의 단독 항목으로 가져올 수 있도록 합니다.
👉 만약 우리가 괄호 뒤에 양사를 놓으면, 그것은 전체적으로 괄호에 적용될 것이다.
예를 살펴보겠습니다.
let regex = /(go)+/ig;
let str = 'goGoGOgOgoooogo';
let result = str.match(regex);
console.log(result);
//output: [ 'goGoGOgOgo', 'go' ]
괄호()는 문자를 한데 묶기 때문에 (go)+는'go','gogo','gogo'등을 나타낸다.그러나 '고' 다음에 다른 o를 찾으면 정규 표현식과 일치하지 않습니다.다시 한 번, 다른 '고' 를 찾았을 때, 두 번째 일치로 되돌아왔습니다.숫자로 정규 표현식 포획 그룹 지정하기
예를 들어, 우리는 하나의 문자열에서 여러 번 반복되는 패턴을 작성해야 한다.이런 상황에서 우리는 그것을 쉽게 지정할 수 있으며, 반복해서 작성할 필요가 없다.
반복 문자열의 표시 위치를 지정하려면 백슬래시()와 숫자가 필요합니다.이 숫자는 1부터 시작합니다. 추가 포획 그룹이 증가함에 따라 증가합니다.
🔸 예: 코드 블록은 하나의 문자열과 일치합니다. 이 문자열은 같은 숫자로만 구성되고 세 번 반복되며 하나의 빈칸으로 구분됩니다.
let repeatNum = "93 93 93";
let wrongNum = "100 100 200 100";
let regex = /^(\d+)\s\1\s\1$/;
let result = regex.test(repeatNum);
console.log(result); //true
result = repeatNum.match(regex);
console.log(result); // [ '93 93 93' ]
let wrongRes = regex.test(wrongNum);
console.log(wrongRes); //false
wrongRes = wrongNum.match(regex);
console.log(wrongRes); //null
/^(\d+)\s\1\s\1$/
이 정규 표현식의 해석:(i) 삽입 기호
( ^ )
는 전체 정규 표현식의 시작에 위치하고 한 줄의 시작과 일치한다.(ii)
(\d+)
는 0-9 사이의 모든 숫자가 문자열에 최소한 한 번 또는 여러 번 나타나는 것을 처음 발견한 포획 그룹이다.(iii)
\s
단일 공백 찾기(iv)
\1
는 첫 번째 포획조, 즉(\d+)
를 대표한다.(v) 달러 기호 ($) 는 전체 정규 표현식의 끝에 있으며, 한 줄의 끝과 일치합니다.
🔹 첫 번째 캡처 그룹은 *\1*로 반복되며 공백으로 구분됩니다.출력은'100 100','93 93'과 같은 세 개의 같은 숫자와 일치하지만 일치 횟수는 3회를 초과하지 않습니다!
🔹
regex.test(repeatNum)
true를 되돌려주고'9393'과 일치하지만 regex.test(wrongNum)
false를 되돌려줍니다. 일치하는 항목을 찾지 못했기 때문입니다.match()가 null로 반환됩니다.정규 표현식 포획 그룹은 문자열을 사용하여 문자열의 텍스트를 검색하고 대체합니다.바꾸기()
정규 표현식에서, 검색도 우리가 일치해야 할 텍스트를 바꿀 때, 우리는 검색을 더욱 강하게 할 수 있다.
string.replace()
는 이 문자열의 모든 모델을 검색하고 바꾸는 이상적인 방법이다.👉 그것은 두 개의 매개 변수가 필요하다.
👉 우선 우리가 검색해야 할 정규 표현식 모드입니다.
👉 두 번째는 일치하는 문자열을 바꾸거나 작업을 수행하는 함수입니다.
👉 달러 기호($)를 사용하여 대체 문자열에서 캡처 그룹에 액세스할 수 있습니다.
🔸 예: "str"문자열은 세 개의 다른 단어를 포함합니다.우리는 세 개의 다른 단체를 포획해야 한다.정규 표현식'fixRegex'는 세 개의 포획 그룹을 포획하는데 사용되며, 문자열의 모든 단어를 검색합니다.그리고'replaceText'변수를 업데이트하여 문자열'1, 2, 3'을 문자열'3, 2, 1'로 바꾸고 결과를 결과 변수에 분배합니다.
let str = "one two three";
let fixRegex = /^(\w+)\s(\w+)\s(\w+)$/;
let replaceText = "$3 $2 $1";
let result = str.replace(fixRegex, replaceText);
console.log(result); //three two one
정규 표현식/^(\w+)\s(\w+)\s(\w+)$/
설명:(i) 삽입 기호(^)는 전체 정규 표현식의 시작에 위치하고 한 줄의 시작과 일치합니다.
(ii)
\w
는 검색에 포함된(iii)
+
뒤에 있는 \w
는 u를 포함하는 단어 문자를 찾는 것을 나타낸다. 이 문자는 최소한 한 단어 문자를 포함하는 모든 문자열과 일치한다.(iv)
\s
는 공백 문자를 찾는 것을 나타낸다.(v) 달러 기호 ($) 는 전체 정규 표현식의 끝에 있으며, 한 줄의 끝과 일치합니다.
세 개의 서로 다른 캡처 그룹이 있기 때문에\1 after\s는'1'이라는 단어를 반복하기 때문에 작동하지 않습니다.우리는 (\w+) 세 번 써야 한다.
🔹 "replaceText"는 첫 번째 포획 그룹을 세 번째 포획 그룹으로 대체합니다. 이것은 달러 기호 ($) 로 완성된 것입니다.
🔹 $3 세 번째 그룹, 즉 단어 '3' 을 포획하고 $1을 첫 번째 그룹 1, 즉 '1' 으로 대체합니다.
🔹 2조는 여전히 2달러다.
🔹
string.replace()
방법은fixRegex를 첫 번째 매개 변수로 하고replaceText를 두 번째 매개 변수로 하며 "three-two-one"을 간단하게 되돌려 그 중 하나와 세 개를 서로 바꾼다.만약 네가 재미있다고 생각한다면, 이 문제를 해결하기 위해 정규 표현식을 써라.정규 표현식 포획 그룹과 문자열을 사용하여 다음 문자열을 '5 3 1 6 4 2' 로 바꿉니다.방법을 바꾸다.
let str = "one 2 three 4 five 6";
//output: five three one 6 4 2
토론 구역에서 질문하는 것을 환영합니다!!
Reference
이 문제에 관하여(정규 표현식 포획 그룹 사용하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/swarnaliroy94/using-regex-capturing-groups-je2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)