将作为序数的字母和数字组合在一起

2024-04-18 18:27:59 发布

您现在位置:Python中文网/ 问答频道 /正文

目的是删除数字和序号缩写(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)

但是,它也同时设置了前面不允许的字符串

你知道我怎样才能把正确的序号组合在一起吗


Tags: 目的示例数字rdgradest空格nd
1条回答
网友
1楼 · 发布于 2024-04-18 18:27:59

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

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

Regex demo

注意,您可以在正向查找之后省略+,并且可以将替换缩短为[rn]d

相关问题 更多 >