Regex Python:将字母和数字组合为序数

问题描述 投票:1回答:1

目的是删除数字和序数缩写(st,rd,th,nd)之间的空格。

例如,以下数字和缩写应一起构成第10、1和133rd:

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)

但是它也将前面不允许的字符串设置在一起。

您知道如何将正确的序号放在一起吗?

感谢您的帮助:)

python regex regex-lookarounds
1个回答
1
投票

您可以在正向前瞻中添加另一部分,以断言除下划线或数字之外的单词字符,或者断言字符串的末尾(以防万一是最后一次出现:

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

Regex demo

© www.soinside.com 2019 - 2024. All rights reserved.