정규식 소문자 스크립트 유효성 검사

정규식 소문자 스크립트 유효성 검사

입력 문자열이 모두 소문자인지 확인하기 위해 숙제를 하고 있습니다. 이것이 우리가 제공하는 기본 스크립트입니다.

이것이 제가 바꿔야 할 라인입니다.

if [[ "$input" =~ Add your regular expression here ]]

[a-z]소문자 하나만 포함된 항목을 입력 하면 유효성이 검사됩니다. "Brian [[:lower:]]"은 확인하지만 "Cat"은 확인하지 않지만 옹알이만 하면 trhrh괜찮습니다. 여기서 사용된 정규식을 모르겠습니다. 어떤 도움이라도 정말 감사하겠습니다.

답변1

문자열에 다음이 포함되어 있는지 테스트합니다.아니요소문자입니다.

if [[ "$input" =~ [^[:lower:]] ]]; then
    # contains something that is not a lower case letter
else
    # contain only lower case letters
fi

또는,

if ! [[ "$input" =~ [^[:lower:]] ]]; then
    # contain only lower case letters
fi

^시작 부분의 괄호 표현식은 [^abc]단일 문자가 일치하도록 일치의 의미를 반전합니다.아니요 a, b, 또는 c.

또는 문자열의 양쪽 끝에 고정하여 문자열의 전체 길이를 일치시킵니다.

if [[ "$input" =~ ^[[:lower:]]+$ ]]; then
    # contain only lower case letters
fi

^시작 부분의 표현식은 문자열의 시작 부분에만 고정되는 반면, $끝 부분의 표현식은 문자열의 끝 부분에 고정됩니다. 이들 사이에는 소문자 [[:lower:]]+, 즉 하나 이상의 소문자만 허용됩니다. *대신 in을 사용하면 +표현식이 빈 문자열과 성공적으로 일치하도록 만들 수도 있습니다.

[[:lower:]]또한 단일 소문자 일치(단일 소문자 일치)와 [:lower:]문자 일치 :( l, o, w, 또는 ) e사이의 차이점에 유의하세요 r. 원래 질문에서 Brian일치하는 것은 일치하지 않는다고 말했지만 이제는 의미가 있습니다. 편집 시 표현식을 올바른 표현식으로 변경했으며 이제 일치해야 합니다.[:lower:]cats[[:lower:]]cats


정규식 일치를 위해 와일드카드 일치가 설정됩니다.

if [[ "$input" == *[![:lower:]]* ]]; then
    # contains something that is not a lower case letter
else
    # contain only lower case letters
fi

globbing 패턴에서 !대괄호 표현식의 시작은 ^정규식의 경우와 동일하게 작동합니다( 글로빙 패턴에서도 bash인식된다고 생각하지만).^

답변2

원한다면 다음 라이너를 확인할 수도 있습니다.

echo "$input" | grep -qE '^[[:lower:]]*$' && echo "All LowerCase" || echo "Not All LowerCase"

관련 정보