regex - 如何拆分作为编号列表的字符串
问题描述
我有一个这样的字符串
20. Kyoto, Japan19. Rijeka, Croatia18. Panama17. Rabat, Morocco16. The British Virgin Islands15. Frisian Islands, Denmark14. Qingdao, China13. Lebanon12. Portland, Maine, US11. Dakar, Senegal10. Egadi Islands, Sicily9. Paris, France8. Siargao, Philippines7. Galway, Ireland6. Kangaroo Island, Australia5. Salvador, Brazil4. Armenia3. Kyrgyzstan2. Plymouth, UK1. Pakistan19. THE TURKISH RIVIERA18. PERTH, WESTERN AUSTRALIA17. SINGAPORE16. THE SCOTTISH HIGHLANDS15. St Barth’s,Caribbean14. Mozambique13. Mumbai12. The Peloponnese, Greece11. Tahiti10. Namibia9. Patagonia8. Arles, France7. Chengdu, China6. Egypt5. Transylvania, Romania4. TASMANIA, AUSTRALIA3. New Orleans2. Valle de Guadalupe1. Matera, Italy
我将如何按列表编号拆分它?可以这样做保留数字还是我最好稍后添加数字?
解决方案
如果您确信除了项目编号之外没有数字,这很容易。String#scan
对于数字→ <em>点 →空格→ <em>不是数字。
str.scan(/(\d+)\.\s+(\D+)/)
#⇒ [["20", "Kyoto, Japan"],
# ["19", "Rijeka, Croatia"],
# ["18", "Panama"],
# ["17", "Rabat, Morocco"]
# ....]
推荐阅读
- java - Http 响应 Content-Type 为 json。“无效的 MIME 类型”错误
- sql - 使用指纹设备的考勤日志文件。如何显示在场和缺席?
- r - 提取R中两个符号之间的子字符串
- c++ - 类过程中的 OpenGL 空白屏幕
- r - 将 geom_point 更改为渐变填充形状/多边形
- security - 检测到请求获取我的网络服务器的假用户代理(又名刮板)?
- aws-lambda - Serilog CloudWatchSink 不适用于 Lambda 函数
- javascript - regex to mask phone number such that except first 2 and last 2 characters in a number are replaced with * in javascript
- jmeter - Opco 的 Jmeter 脚本
- apache-spark - 根据另一个表spark sql计算每一行