책에 쓰여진 내용을 이해하는 데 어려움이 있습니다 /.*/
. 이렇게 하면 전체 텍스트 줄이 인쇄됩니다. 이는 .
모든 문자를 의미하며 *
선행 문자가 0번 이상 나타나는 것을 의미합니다. 그래서 나는 /.*/ 그런 것을 찾고 싶습니다. rrr
qqqq
abbbbb
즉, 단일 문자의 연속적인 반복을 의미합니다.
그러나 그것은 그렇게 하는 것이 아닙니다.왜?
내 두 번째 질문은: 왜 /.+/
똑같은 일을 하지 않습니까? 텍스트에서 내 시도의 결과는 다음과 같습니다.?
답변1
아니요, *
in은 .*
"이전의 임의 개수"를 의미합니다.표현하다"는 표현식과 일치하는 모든 유형의 0개 이상의 문자입니다 .
.
이는 일치 하는 모든 문자 도 .*
일치한다는 의미입니다. 허용하므로 빈 줄과도 일치합니다.aaaa
abcd
abcd
.
영성냥.
다음을 포함하는 행을 찾으려면반복하다자연, 용도
/\(.\)\1\1*/
이 표현은 "모든 문자와 일치합니다.같은 역할, 그리고 같은 문자의 수"입니다. 다음 \1*
을 포함하는 줄을 찾는 경우가 아니면 제거할 수 있습니다.오직반복되는 문자, 이 경우 아래와 같이 줄의 시작과 끝 부분에 표현식을 고정해야 합니다.
/^\(.\)\1\1*$/
편집자 ed
지원기초적인자주 사용되는 표현. 수정 +
자는확장하다정규식 수정자. 오류 해석이 활성화된 상태에서 이 명령을 사용하면 ?
(또는 GNU에서) 이 표시됩니다. 이는 앞에 다른 문자가 포함된 줄을 찾으려고 하기 때문입니다.ed
/.+/
no match
No match
ed
H
+
확장 .+
정규식("하나 이상의 임의 문자 일치")은 ..*
"한 문자와 일치한 다음 0개 이상의 임의 문자와 일치"하는 기본 정규식과 동일합니다.
~에 따르면그 매뉴얼, GNU는 정규식을 ed
지원해야 하므로 동등 하지만 내 OpenBSD 시스템의 GNU 1.14.2는 이를 수행하지 않습니다.\+
..*
.\+
ed