сопоставить целое предложение с регулярным выражением

1

Я пытаюсь сопоставить предложения без заглавных букв с регулярным выражением в 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]+

Похоже, он смотрит только на первое слово предложения.

Любая помощь?

  • 0
    Не используйте регулярные выражения для этого.
  • 0
    если == a.toLowerCase ()
Теги:
match

4 ответа

1
Лучший ответ

[az]+ будет соответствовать, если ваша строка содержит любую строчную букву.

Если вы хотите, чтобы ваша строка не содержала заглавные буквы, вы можете использовать класс отрицательных символов: ^[^AZ]+$

Имейте в виду, что это не будет обрабатывать акцентированные символы (например, É).

Чтобы сделать эту работу, вы можете использовать свойства Unicode: ^\P{Lu}+$
\P означает, что он не относится к категории Юникод, а Lu - буква верхнего регистра, имеющая категорию вариантов в нижнем регистре.

  • 0
    Это будет включать все виды символов из Unicode: китайские, кириллические, арабские, другие латинские заглавные буквы, и кто знает что.
  • 0
    это не сработало, оно совпало: «это тест»
Показать ещё 2 комментария
1

В этом случае я бы посоветовал против regex, так как вы, похоже, не используете расширенные символы.

Вместо этого попробуйте протестировать следующее:

myString.equals(myString.toLowerCase());
1

Это не соответствует, потому что вы не использовали пробел в шаблоне соответствия, поэтому ваше регулярное выражение соответствует целым словам без пробелов.

попробуйте что-то вроде ^[az ]+$ вместо этого (обратите внимание, что это квадратные скобки) вы также можете использовать \s который является сокращением для "пробельных символов", но это также может включать в себя такие вещи, как линейные каналы и возврат каретки, поэтому просто имейте в виду.

Этот шаблон делает следующее:

^ соответствует началу строки

[az ]+ соответствует любому символу az или пробелу, где существует 1 или более.

$ соответствует концу строки.

1
^[a-z ]+$

Попробуйте это. Это подтвердит правильность.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню