[ID CC-CC2021] Цифры, знаки препинания, пробелы

Bebs

Топикстартер
15 лет на форуме
Сообщения
461
Реакции
223
Снимок экрана 2020-01-11 в 13.05.16.png
Дано:
Ссылки на список литературы. Набраны в верхнем регистре (символьным стилем "SUPER"). Количество цифр может быть от одной до трех. Возможны варианты:
1) диапазон: 48—50
2) перечень: 48, 50 (до пяти чисел)
3) перечень с диапазоном: 48, 50—52
Нужно поменять местами ссылки и знаки препинания. Здесь тоже варианты
1) точка
2) запятая
3) точка с запятой
4) двоеточие
Часто, но не везде, после знака препинания пробел, который нужно удалить.
Никак не соображу как же составить Grep-запрос (или цепь запросов) на поиск—замену
 

К.Т.

Участник
Сообщения
323
Реакции
337
1. Пометить все ссылки, например цветом (можно временно задать в свойствах символьного стиля).
2. Так же пометить все знаки препинания.
3. Замена в помеченном: ([.,;:])\h*(\d.*\d) на $2$1
4. Убрать пометочное форматирование.

(Записано навскидку, не проверялось).
 

Валера1966

15 лет на форуме
Сообщения
1 291
Реакции
1 391

Не по теме:
По правилам перед номером сноски в тексте ставится тонкий пробел, 2 пт, (Ctrl+Shift+Alt+M). Кроме случаев, когда перед ним стоят символы "точка", "запятая", "!..", "?.." или многоточие. У вас № 48 через пробел от точки отстоит, А № 47 вообще без пробела.
 
Последнее редактирование:

andrejK

R.I.P.
Сообщения
10 300
Реакции
5 218
а так)))

(?<!\d)([.,;:])\h*(\d.*\d?)
 
  • Спасибо
Реакции: Bebs

Bebs

Топикстартер
15 лет на форуме
Сообщения
461
Реакции
223
Но с заменой проблема. Теперь регистр ссылки становится нормальным, а знака препинания — верхним
Снимок экрана 2020-01-11 в 15.12.01.pngСнимок экрана 2020-01-11 в 15.14.14.png
 

andrejK

R.I.P.
Сообщения
10 300
Реакции
5 218
ну не вполне. лень до конца продумывать.

если есть конструкция "1985<сноска>1, 2<сноска>." - будет плохо)
 

Bebs

Топикстартер
15 лет на форуме
Сообщения
461
Реакции
223
В конечном итоге получился следующий алгоритм.
Вначале все ссылки на литературу с помощью несложной цепочки замен заключил в квадратные скобки. Затем с помощью конструкции
Код:
(?<!\d)([.,;:])\h*(\[.+\])
поменял их местами с знаками препинания, а затем вернул знакам препинания нормальный вид.
Снимок экрана 2020-01-11 в 16.02.18.png
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
между 35, 36 пробел какой-то огромный, подозреваю что он не superscript