Установите вместе буквы и цифры, которые являются порядковыми номерами - PullRequest
2 голосов
/ 24 января 2020

Цель состоит в том, чтобы убрать пробел между числами и сокращением порядкового номера (st, rd, th, nd).

Например, следующие цифры и сокращения должны быть вместе, чтобы образовать 10-е, 1-е и 133-е:

10   th elementary
1  st grade
133  rd anniversary

Однако эти другие примеры не могут быть установлены вместе:

abc123 th 33333    rddccc
10 thetree
20 street

Для этой цели я предложил следующее регулярное выражение:

(?<=[0-9])+\s+(?=(st|nd|rd|th)\b)

Однако оно объединяет также предыдущие недопустимые строки.

Знаете ли вы, как можно Я собрал только правильные порядковые номера?

1 Ответ

6 голосов
/ 24 января 2020

Вы можете добавить еще одну часть к положительному виду, чтобы утверждать, что ниже следует слово, за исключением символа подчеркивания или ди git, или утверждать конец строки в случае, если это последнее вхождение:

(?<=[0-9])\s+(?=(?:st|[rn]d|th)(?: [^\W\d_]|$))

Regex demo

Обратите внимание, что вы можете опустить + после положительного взгляда и вы можете сократить чередование до [rn]d

...