其目的是删除数字和序数缩写(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)但是,它也一起设置了前面不允许的字符串。
你知道怎样才能把正确的序数组合在一起吗?
发布于 2020-01-25 04:09:31
您可以向正向先行添加另一个部分,以断言以下内容是一个单词字符(下划线或数字除外),或者断言字符串的末尾,以防它是最后一次出现:
(?<=[0-9])\s+(?=(?:st|[rn]d|th)(?: [^\W\d_]|$))请注意,您可以在正后视之后省略+,并且可以缩短替换为[rn]d的时间
https://stackoverflow.com/questions/59902994
复制相似问题