Добрый день всем!
Для начала, я профессиональный переводчик / локализатор / переводчик, поэтому иногда сталкиваюсь с определенными трудностями при решении вопросов, связанных с регулярным выражением или чем-то подобным. Пожалуйста, терпите меня:)
Это мой текущий параметр:
- перевод коротких медицинских статей;
- локализация приложения.
Эти статьи публикуются непосредственно в приложении, поэтому нам необходимо предварительно проверить их на соответствие определенным типографским правилам, чтобы избежать смещения.
Поскольку я являюсь новым руководителем группы, я решил автоматизировать этот процесс с помощью регулярных выражений.
Но я застрял, потому что я не совсем понимаю, прав я или нет.
Вот что я придумал:
- неразрывный пробел перед тире, пробел после тире:
^[\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 и следующим словом;
и он прекрасно работает для неразрывного пробела до пробела, но без пробела после пробела.