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

0

У меня есть такой текст:

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

Я хочу найти все правильное дело с помощью регулярного поиска. Мое исключение является правильным случаем после точки, как

. He

У меня есть поиск в интернете и я нашел этот вход

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

Проблема в том, что вы можете отметить Quai не всеми 2 или 3 словами, как Quai Voltaire, и как я могу исключить какой-то подходящий случай, как я, я, мой ...?

Как я могу это сделать?

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

Ответы:

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]*

Работает отлично

Sevent
источник