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)
但是,它还设置了以前不允许的字符串。
你知道我怎样才能把正确的序数组合在一起吗?
解决方案
您可以在肯定的前瞻中添加另一部分以断言以下是除下划线或数字之外的单词字符,或者断言字符串的结尾以防它是最后一次出现:
(?<=[0-9])\s+(?=(?:st|[rn]d|th)(?: [^\W\d_]|$))
请注意,您可以省略+
after positive lookbehind 并且您可以将交替缩短为[rn]d
推荐阅读
- asp.net-mvc - 将“详细信息”视图显示为模式弹出窗口
- python - 查找仅在某些列中具有值的行
- r - 误差优化 birnbaum sanders 分布 fnpar
- python - 使用序列的方程迭代
- azure - 托管在 Azure Function 应用程序中的 .net 控制台应用程序将在哪个帐户下运行
- python-3.x - 尝试学习python
- java - Spring 服务 bean 为空
- javascript - 使用 Javascript 将 URL 查询字符串传递到 HTML 表单字段
- xcode - 是否可以在没有开发人员程序的情况下在设备上测试应用程序?[Xcode 9.4 - 代码签名错误]
- git - 将拉取请求保持在合理大小的工具