Я пытаюсь сопоставить предложения без заглавных букв с регулярным выражением в Java:
"Hi this is a test" -> Shouldn't match
"hi thiS is a test" -> Shouldn't match
"hi this is a test" -> Should match
Я пробовал следующее регулярное выражение, но оно также соответствует моему второму примеру ("привет, thiS - это тест").
[a-z]+
Похоже, он смотрит только на первое слово предложения.
Любая помощь?
[az]+
будет соответствовать, если ваша строка содержит любую строчную букву.
Если вы хотите, чтобы ваша строка не содержала заглавные буквы, вы можете использовать класс отрицательных символов: ^[^AZ]+$
Имейте в виду, что это не будет обрабатывать акцентированные символы (например, É).
Чтобы сделать эту работу, вы можете использовать свойства Unicode: ^\P{Lu}+$
\P
означает, что он не относится к категории Юникод, а Lu
- буква верхнего регистра, имеющая категорию вариантов в нижнем регистре.
В этом случае я бы посоветовал против regex, так как вы, похоже, не используете расширенные символы.
Вместо этого попробуйте протестировать следующее:
myString.equals(myString.toLowerCase());
Это не соответствует, потому что вы не использовали пробел в шаблоне соответствия, поэтому ваше регулярное выражение соответствует целым словам без пробелов.
попробуйте что-то вроде ^[az ]+$
вместо этого (обратите внимание, что это квадратные скобки) вы также можете использовать \s
который является сокращением для "пробельных символов", но это также может включать в себя такие вещи, как линейные каналы и возврат каретки, поэтому просто имейте в виду.
Этот шаблон делает следующее:
^
соответствует началу строки
[az ]+
соответствует любому символу az или пробелу, где существует 1 или более.
$
соответствует концу строки.
^[a-z ]+$
Попробуйте это. Это подтвердит правильность.