[ID CS4-CS6] Заменить точку регулярную на полужирную.

  • Автор темы Автор темы Jeine
  • Дата начала Дата начала

Jeine

Да здравствует разум! Да сгинет маразм!
Топикстартер
15 лет на форуме
Сообщения
7 819
Реакции
6 640
Товарищи верстальщики, как правильно составить запрос ГРЕП, где

нужно найти любой полужирный или курсив+полужирный символ и после него точку регулярную
и заменить эту точку на полужирную

?
 
Вроде как только в два прохода.

Первый: найти полужирный за которым следует точка. Заменить на найденное + символ, не присутствующий в тексте.

Второй: найти символ + точка. Заменить на полужирную точку.
 
  • Спасибо
Реакции: Jeine
Вроде как только в два прохода.
Первый: найти полужирный за которым следует точка. Заменить на найденное + символ, не присутствующий в тексте.
Второй: найти символ + точка. Заменить на полужирную точку.

Если в поиске задан стиль, то ему должно соответствовать всё, что определяется выражением grep, включая positive lookahead. То есть если задать поиск (.)(?=\.) + полужирный, то найдутся только сочетания полужирного символа с полужирной точкой.

Лучше так:
1. найти полужирный символ в конце слова, приделать к нему символ-маркер.
2. заменить сочетание маркер+точка на полужирную точку.
3. удалить все маркеры
 
К.Т. сказал(а):
Лучше так:
1. найти полужирный символ в конце слова, приделать к нему символ-маркер.
но ведь так найдутся и символы в конце слова, после которых нет точки..?
 
А они разве мешают? :)
может, я что-то не так делаю, но если я нахожу любой жирный символ в конце слова и пытаюсь вставить что-нибудь после него, то это вставляемое тоже становится жирным... и снова складывается исходная ситуация — жирный символ и нежирная точка (и как их искать?)...
 
...и снова складывается исходная ситуация — жирный символ и нежирная точка (и как их искать?)...
Да, но символ заранее определённый (вы его сами выбрали) и нигде более не встречающийся.
Если трудно подобрать символ, который нигде более не встречается, можно использовать сочетание пары-тройки символов. Тут уж точно можно найти такое, которого в тексте гарантированно нет.
 
Первый проход
Поиск: (.)(?=\.)
Замена: $1.

Второй проход:
Поиск: \.\.
Замена: .

Всё — без атрибутов форматирования.
 
Первый проход
Поиск: (.)(?=\.)
Замена: $1.

Второй проход:
Поиск: \.\.
Замена: .

Всё — без атрибутов форматирования.
на первый взгляд показалось, что полная бессмыслица, просто меняется точка на точку, однако всё работает как нужно... :) я бы ни за что не додумался... :)
 
Второй проход:
Поиск: \.\.
Замена: .
Лучше поиск: (?<![\!\?\.])\.\.(?!\.)
(это чтобы отсечь варианты !.. и ?.. и если многоточие не одним символом набрано - … - а тремя точками, что, конечно, нежелательно :) )