Требуется RE для получения только набора слов в верхнем регистре до конца строки - PullRequest
2 голосов
/ 25 октября 2019

Я хотел создать регулярное выражение, которое будет подбирать набор слов UPPERCASE (разделенных пробелами) в строке.

Для Например, в этом тексте

    TOPIC ONE
    Description of this topic, one CAPITAL word
    TOPIC NUMBER TWO
    Description of this topic two CAPITAL word


Мне нужно выбратьтолько ТЕМА ОДИН и ТЕМА НОМЕР ВТОРОЙ, но не слово КАПИТАЛ.

Я пробовал следующее RE

    \b[A-Z]+\b

, которое может подбирать КАПИТАЛЬНЫЕ СЛОВА индивидуально

Я такжепробовал

    \b[A-Z]+\ \b

, но выбирает все, кроме последнего ВЕРХНЕГО СЛОВА.

Я хочу убедиться, что RE должен выбирать только более одного слова всегда.

Вот примерТекст для проверки:


    CHIEF COMPLAINT  Weakness inability to talk

    HISTORY OF THE PRESENT ILLNESS  This is a yearold
    AfricanAmerican male with a history of hypertension who was
    in his usual state of health

    FAMILY HISTORY  Unknown

    SOCIAL HISTORY  The patient lives 

    PHYSICAL EXAMINATION ON ADMISSION  During the five minute
    examination the patient became progressively less responsive
    and then vomited requiring intubation and paralytics during
    the examination 

1 Ответ

2 голосов
/ 25 октября 2019

Вы можете использовать

\b[A-Z]+(?:\s+[A-Z]+)+\b
\b[A-Z]+(?:[^\S\r\n]+[A-Z]+)+\b
\b\p{Lu}+(?:\h+\p{Lu}+)+\b

См. Демо регулярных выражений и график регулярных выражений :

enter image description here

Подробности

  • \b - граница слова
  • [A-Z]+ - 1+ заглавные буквы ASCII (\p{Lu} соответствует любомуПрописная буква Unicode)
  • (?:\s+[A-Z]+)+ - 1 или более последовательных вхождений
    • \s+ - 1+ пробелов ([^\S\r\n]+, \h+, [\p{Zs}\t]+ будет соответствовать 1 или болеегоризонтальные пробелы)
    • [A-Z]+ - 1+ заглавные буквы ASCII
  • \b - граница слова
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...