繁体   English   中英

正则表达式从字符串中提取所有数字(不一定是连续的)

[英]regex to extract all digits from a string (not necessarily consecutive)

(还有冒号和句点,尽管我确定我可以自己进行修改!)

从PDF提取数据后,我在重叠的地方有很多“合并”字段,例如

Joh1n5D:o2d4e.81

我想分为

John Doe
15:24.81

我有几百个,所以我希望使用正则表达式是可能的-我觉得应该可以,但是我不能完全理解匹配字符串中的多个部分并将它们串联在一起返回吗?

([0-9\:\.])/g

可以,但是为每个字符而不是一个字符串返回单独的匹配项?

正则表达式将始终返回单独的匹配项,因为这正是正则表达式的工作方式。 另外, \\d+|[:.]可能会稍好一些,因为每组数字将在一起。

至于您的困境,可以使用类似(\\d+|[:.])|[\\s\\S]*? 并用regex101上的$ 1代替,像这样 ,添加的替换项在那里删除所有其他字符(尽管,当然,它为每个字符都留了一个空格,所以看起来很奇怪)

另一个解决方案,但是根据语言的不同,可以使用两个正则表达式,例如: [\\d:.][^\\d:.][a-zA-Z][^a-zA-Z] ,然后使用多种语言中出现的函数,例如带有正则表达式的replaceAll 在Java示例中:

String str = example.replaceAll("[\\d:.]", ""); // result: JohnDode
String time = example.replaceAll("[^\\d:.]", ""); // result: 15:24.81

两次操作,但无需使用组等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM