누구든지 이 표현을 하나씩 설명해 주실 수 있나요? grep '\([aeiou]\).\1'

누구든지 이 표현을 하나씩 설명해 주실 수 있나요? grep '\([aeiou]\).\1'

나는 "모음(a, e, i, o 또는 u)이 포함된 모든 줄과 한 문자 뒤에 동일한 모음이 다시 나오는 모든 줄을 인쇄하는 숙제에 대한 이 표현을 찾았습니다. 따라서 "eve" 또는 '아담'이지만 '베라'는 아닙니다." 표현은 올바르게 작동하지만 각 부분의 기능을 설명하여 작동 방식을 더 잘 이해할 수 있는 사람을 찾고 있습니다.

답변1

우선 정규식 사이트를 검색하려면 Google을 이용하세요. 그들은 당신에게 많은 도움이 될 것입니다. 예를 들어, regexone을 사용해 보세요.

둘째, 정규식을 테스트하거나 이해하는 데 도움을 받으려면 regex101.com을 참조하세요. 이는 무슨 일이 일어나는지 단계별로 설명하므로 많은 도움이 될 수 있습니다. 정규식을 테스트할 수도 있습니다.

이제 표현은 다음과 같습니다.

[aeiou]

대괄호 안의 문자(여기서는 a, e, i, o 또는 u)와 일치합니다.

.

임의의 단일 문자와 일치합니다.

\1

첫 번째 캡처 그룹과 일치합니다.

\(anything\)

캡처 그룹입니다.

캡처 그룹은 나중에 사용하기 위해 기억할 수 있는 문자열의 이름입니다. 이 경우 [aeiou]에서 문자를 캡처하면 일치하는 항목을 기억할 수 있습니다. 대신에 이 정규식을 작성한다면:

[aeiou].[aeiou]

첫 번째 모음과 두 번째 모음이 같은지 확인할 방법이 없습니다.

따라서 정규식은 ""aeiou"의 문자 중 하나와 단일 문자 및 첫 번째 문자 중 하나와 일치하는 항목과 일치함"을 의미합니다.

답변2

첫째, \(\). 이는 "이 이스케이프된 괄호 안에 있는 모든 항목은 그룹이며 나중에 표현식에서 참조될 수 있습니다"를 의미합니다. 그 안에는 " , , , 또는 [aeiou]문자 중 하나 "를 의미하는 가 있습니다. 단일 점은 "모든 단일 문자"를 의미합니다. "첫 번째 그룹에서 일치했을 때 찾은 것"을 의미합니다 .aeiou.\1

관련 정보