@webhabr

Как с помощью регулярного выражения найти слово, в котором несколько заглавных букв?

Здравствуйте.
В файле txt, содержится множество строк. В каждой строке несколько слов. Все слова начинаются с заглавных букв.
Но в некоторых словах заглавных букв может быть несколько.
Нужно найти такие слова с помощью регулярного выражения.
Искать слова, в которых только первая буква заглавная - не нужно.
Пример текста (на самом деле в файле много строк):
Massive Innovation InterFace
Hi Tech Interface

В данном примере нужно найти только слово: InterFace
Использую такое выражение, которое я состряпал, с помощью справочника по регулярным выражениям.
\b\H+[A-Z]\b
Моя логика такая:
\b начало слова;
\H+ ищу любой символ, кроме пробела (иногда слово может начинаться и с прописной буквы);
[A-Z] здесь выражение должно найти заглавный символ, перед которым стоит какой-либо другой символ;
\b конец слова.

Мой вариант не работает. Пожалуйста, подскажите что не так и как это можно решить.
Спасибо.

P.S. Вопрос решен!
Помог Dimonchik
Для латиницы: \b[a-zA-Z][a-z]+[A-Z][a-zA-Z]*\b
Для кириллицы: \b[а-яА-ЯёЁ]*[А-ЯЁ][а-яА-ЯёЁ]*\b
В окне поиска обязательно надо включить "Учитывать регистр"
Всем огромное спасибо за оказанную помощь!
  • Вопрос задан
  • 476 просмотров
Решения вопроса 1
dimonchik2013
@dimonchik2013
non progredi est regredi
извини, лень думать самому, заслал в Бинг
чего и тебе рекомендую через Скайп

Если вы хотите найти слово InterFace с помощью регулярного выражения, то вы можете использовать следующий вариант:

\b[А-ЯЁ][а-яА-ЯёЁ]*[А-ЯЁ][а-яА-ЯёЁ]*\b

Это выражение означает, что вы ищете границу слова (\b), за которой следует одна буква в верхнем регистре ([А-ЯЁ]), затем ноль или более букв в любом регистре ([а-яА-ЯёЁ]*), снова одна буква в верхнем регистре ([А-ЯЁ]), и снова ноль или более букв в любом регистре ([а-яА-ЯёЁ]*), и снова граница слова (\b).

Например, если вы примените это выражение к тексту:

Это пример текста с InterFace и другими СловамиСБольшойБуквой.

То вы найдете следующие слова:

InterFace
СловамиСБольшойБуквой


вот блин, никому доверять нельзя, ну - в общем - сам догадаешься, поправить примерно так - выкинуть обязательность начальной зщаглавной

\b[а-яА-ЯёЁ]*[А-ЯЁ][а-яА-ЯёЁ]*\b
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы