2013-07-24 3 views
2

Fellow Форума Пользователей,Regex для мечения верхнийРЕГИСТРа ДАННЫХ ОСТОРОЖНО

Я использую Notepad ++ и имею кучу ПРЕДОСТЕРЕЖЕНИЙ встроенных в других текстовых данных. Две константы, которые устанавливают данные CAUTION отдельно от остальных текстовых данных, являются двумя факторами. Один - это текст ПРЕДОСТЕРЕЖЕНИЯ, всегда в тексте UPPERCASE, а второй - текст ПРЕДОСТЕРЕЖЕНИЯ, всегда начинающийся со слова «ПРЕДОСТЕРЕЖЕНИЕ» в верхнем регистре. Ниже приведен небольшой пример того, что я описываю:

Bla bla bla bla bla. ПРЕДОСТЕРЕЖЕНИЕ НЕ ВЫПОЛНЯЙТЕ ТЕХНИЧЕСКОЕ ОБСЛУЖИВАНИЕ НА МАШИНЕ БЕЗ ПЕРВОГО ЧТЕНИЯ РУКОВОДСТВА ВЛАДЕЛЬЦА. Bla bla bla bla bla bla.

Можно ли для RegEx найти множество различных вариантов текста ниже:

ВНИМАНИЯ НЕ проводите техническое обслуживание машины без РУКОВОДСТВА ПЕРВОГО ЧТЕНИЯ владельца.

А затем заменить его следующим:

<caution><para>DO NOT PERFORM MAINTENANCE ON MACHINE WITHOUT FIRST READING THE OWNER'S MANUAL.</para></caution> 

мне нужна помощь кодирования RegEx, который делает следующее:

  1. Умеет целевые данные, которые всегда начинаются со словом «ОСТОРОЖНО!» (в UPPERCASE)
  2. Можно настроить таргетинг на весь текст UPPERCASE, который следует за словом «ПРЕДОСТЕРЕЖЕНИЕ», пока он не перейдет к строчному тексту.
  3. Удаляет слово «ПРЕДОСТЕРЕЖЕНИЕ», расположенное в начале после добавления тега XML.
  4. Не будет обмануто UPPERCASE «B» в слове «Bla» (т. Е. «MANUAL. Bla»). Другими словами, он не включает в результат поиска первую заглавную букву, которая начинает следующее предложение. Как можно устранить эту жадную проблему?

Возможно ли такое RegEx? Как в мире можно сделать RegEx достаточно умным, чтобы просто найти только текст, связанный с CAUTION, на основе того, что я описал? Любая информация будет принята с благодарностью. Заранее спасибо.

ответ

2

Я не notpad ++ специально, так что несмотря на любые причуды в их реализации регулярных выражений, это, кажется, сделать трюк:

CAUTION ([A-Z](([^a-z])+\s+)+) 

с заменой

<caution><para>$1</caution></para> 

Посмотреть его в действии:

http://regexr.com?35mku

+0

Ницца, и это захватывает прерывистую пунктуацию, +1 –