Regex знайде правильний регістр і виключить слово в блокноті ++ [закрито]


0

У мене є такий текст, як цей:

Після життя у французькому дипломатичному корпусі граф де Грузе жив із дружиною в елегантному таунхаусі на Куай Вольтер. Він був симпатичною людиною, культивованою, звичайно, із заслуженою репутацією щедрого господаря та кумедного розбіжника.

Я хочу знайти належний випадок, використовуючи regex find. Моє виключення - належний випадок після крапки

. He

У мене є пошук в Інтернеті, і я знайшов, що цей вхід може мені

[a-z] [A-Z][\w]*

Проблема Rhe полягає в тому, що ви можете позначити Quai не всіма 2 або 3 словами, як Quai Voltaire, і як я можу виключити такий належний випадок, як I, Me, My ...?

Як я можу це зробити?


Я не впевнений, чому це було закрито після відповіді. У мене не було проблем з розумінням цього, хоча це не рідна англійська. Спробую її трохи відредагувати.
Джон Кумбс

Відповіді:


1

Я погоджуюся з Андреасом. Тепер, якщо це одноразове завдання, яке ви можете розділити на кілька етапів, я б запропонував тимчасово виключити винятки, ймовірно, використовуючи інакше невикористаний символ, а потім повернути його пізніше. Ось знахідка та заміна:

\b(I|God|Dad)\b
@\1

Це дає нам щось подібне (зауважте, що я і мої не написані з великої літери англійською мовою):

Did @I write this to @God, @Dad, or my wife? After a lifetime in the 
French diplomatic corps, the Count de Gruse lived with his wife 
in an elegant townhouse on Quai Voltaire! He was a likeable man, 
cultivated of course, with a well-deserved reputation as a 
generous host and an amusing raconteur.

Звідти ви можете скористатися регістровим відбитком та негативним поглядом позаду, щоб знайти великі слова, яким передує одне чи більше пробілів, не слідуючи межі речення:

 (?<![.?'!"])[ ]+[A-Z]

Зауважте, що це не вдасться для твердо обгорнутого тексту, наприклад, "французький" у прикладі, як я показав його вище.

Regex може бути досить крихким, тому для подібного може знадобитися невелика програма / сценарій, якщо це не разове завдання. (Або, можливо, макрос.)

Сказавши це, ось що ви попросили, включивши також негативний пошук, щоб зробити це за один крок. :)

(?<![.?'!"]) (?!Dad\b|God\b|I\b)[A-Z]

Порада: якщо ви не маєте або не бажаєте використовувати прапорець, що відрізняється від регістру, ви можете поставити це в передній частині регулярного виразу:

(?c)

Запрошуємо - раді допомогти!
Джон Кумбс


0

Коли я додаю

[\w]*

то мій регекс

(?<![.?'!"]) (?!Dad\b|God\b|I\b)[A-Z][\w]*

Це прекрасно працює

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.