이해력 검사 문제/.*/

이해력 검사 문제/.*/

책에 쓰여진 내용을 이해하는 데 어려움이 있습니다 /.*/. 이렇게 하면 전체 텍스트 줄이 인쇄됩니다. 이는 .모든 문자를 의미하며 *선행 문자가 0번 이상 나타나는 것을 의미합니다. 그래서 나는 /.*/ 그런 것을 찾고 싶습니다. rrr qqqq abbbbb즉, 단일 문자의 연속적인 반복을 의미합니다.

그러나 그것은 그렇게 하는 것이 아닙니다.왜?

내 두 번째 질문은: 왜 /.+/똑같은 일을 하지 않습니까? 텍스트에서 내 시도의 결과는 다음과 같습니다.?

답변1

아니요, *in은 .*"이전의 임의 개수"를 의미합니다.표현하다"는 표현식과 일치하는 모든 유형의 0개 이상의 문자입니다 ..

이는 일치 하는 모든 문자 도 .*일치한다는 의미입니다. 허용하므로 빈 줄과도 일치합니다.aaaaabcdabcd.성냥.

다음을 포함하는 행을 찾으려면반복하다자연, 용도

/\(.\)\1\1*/

이 표현은 "모든 문자와 일치합니다.같은 역할, 그리고 같은 문자의 수"입니다. 다음 \1*을 포함하는 줄을 찾는 경우가 아니면 제거할 수 있습니다.오직반복되는 문자, 이 경우 아래와 같이 줄의 시작과 끝 부분에 표현식을 고정해야 합니다.

/^\(.\)\1\1*$/

편집자 ed지원기초적인자주 사용되는 표현. 수정 +자는확장하다정규식 수정자. 오류 해석이 활성화된 상태에서 이 명령을 사용하면 ?(또는 GNU에서) 이 표시됩니다. 이는 앞에 다른 문자가 포함된 줄을 찾으려고 하기 때문입니다.ed/.+/no matchNo matchedH+

확장 .+정규식("하나 이상의 임의 문자 일치")은 ..*"한 문자와 일치한 다음 0개 이상의 임의 문자와 일치"하는 기본 정규식과 동일합니다.

~에 따르면그 매뉴얼, GNU는 정규식을 ed지원해야 하므로 동등 하지만 내 OpenBSD 시스템의 GNU 1.14.2는 이를 수행하지 않습니다.\+..*.\+ed

관련 정보