![정규식 소문자 스크립트 유효성 검사](https://linux55.com/image/170919/%EC%A0%95%EA%B7%9C%EC%8B%9D%20%EC%86%8C%EB%AC%B8%EC%9E%90%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%20%EC%9C%A0%ED%9A%A8%EC%84%B1%20%EA%B2%80%EC%82%AC.png)
입력 문자열이 모두 소문자인지 확인하기 위해 숙제를 하고 있습니다. 이것이 우리가 제공하는 기본 스크립트입니다.
이것이 제가 바꿔야 할 라인입니다.
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"