2015-03-29 6 views
1

Может ли кто-нибудь помочь мне с регулярным выражением, чтобы проверить, правильно ли все слова в предложении, например, начинаются с прописной буквы?Сценарий оболочки для проверки правильности определения случая

#!/bin/sh 

SENTENCE="Blah blah blah" 

PROPER_CASE_REGEX="\b^AZ*\b" # <---- Here's where I need help please 

if [[ ${SENTENCE} =~ $PROPER_CASE_REGEX ]]; 
then 
    echo "Sentence IS proper case" 
elif 
then 
    echo "Sentence is NOT proper case" 
fi 

ответ

1

Вы можете использовать это регулярное выражение в BASH (не в оболочки Борна), чтобы проверить, есть ли предложение все слова, начинающиеся с заглавной буквы:

^([A-Z][[:alnum:]]*[[:blank:]]*)+$ 

Тестирование:

re='^([A-Z][^[:blank:]]*[[:blank:]]*)+$' 

sentence="Blah Blah Blah"  
[[ "$sentence" =~ $re ]] && echo "matched" || echo "no match" 
matched 

sentence="Blah Blah blah" 
[[ "$sentence" =~ $re ]] && echo "matched" || echo "no match" 
no match 

RegEx Demo

+0

Если вы хотите сделать это только в 'sh' not' bas h' затем использовать такое же регулярное выражение, используя команду 'expr'. – anubhava

+0

Это почти идеальное спасибо, однако, «Пэдди О'Ши» или «Шон Петерс-Уэнсли» НЕ считаются надлежащим случаем, как я могу это решить? Предположим, что [: allnum:] необходимо включить 'и -? –

+0

В этом случае используйте 're = '^ ([A-Z] [^ [: blank:]] * [[: blank:]] *) + $'' – anubhava

Смежные вопросы