Регулярные выражения в проверке типографики - PullRequest
0 голосов
/ 28 августа 2018

Добрый день всем!

Для начала, я профессиональный переводчик / локализатор / переводчик, поэтому иногда сталкиваюсь с определенными трудностями при решении вопросов, связанных с регулярным выражением или чем-то подобным. Пожалуйста, терпите меня:)

Это мой текущий параметр:

  • перевод коротких медицинских статей;
  • локализация приложения. Эти статьи публикуются непосредственно в приложении, поэтому нам необходимо предварительно проверить их на соответствие определенным типографским правилам, чтобы избежать смещения.

Поскольку я являюсь новым руководителем группы, я решил автоматизировать этот процесс с помощью регулярных выражений. Но я застрял, потому что я не совсем понимаю, прав я или нет.

Вот что я придумал:

  • неразрывный пробел перед тире, пробел после тире: ^[\xA0]+(—[\s]+)+$
  • en тире в диапазоне номеров (15–20 или 2001–2016): ^[0-9]+(–[0-9]+)+$
  • неразрывные пробелы между цифрами и словами (15 детей, неделя 4): ^([\d]+((\xA0))+[\w]+) и ^[\w]+((\xA0)+[\d])+$
  • списки должны начинаться с тире со следующим пробелом:
    (?(?=\S)(\-)|([\s]+[\w]+[\d]))+[\s]+[\w]+[\s]+.[[:punct:]]$

Я пытался запустить эти выражения на Regex101, все кажется нормальным, но я бы хотел понять, есть ли что-то, что можно улучшить (и я верю, что, безусловно, есть место для улучшений).

Спасибо за ваши предложения и помощь!

РЕДАКТИРОВАТЬ # 1: Это не о языке программирования, мы будем использовать эти выражения в приложении QA, которое позволяет проверять память переводов на соответствие этим правилам.

РЕДАКТИРОВАТЬ # 2: я проверил регулярное выражение в нашей памяти переводов; это конечно не работает для списков - регулярное выражение не показывает ошибку, если нет пробела между em dash и следующим словом; и он прекрасно работает для неразрывного пробела до пробела, но без пробела после пробела.

...