(冒号和句号,虽然我确定自己可以自行修改!)
从PDF中提取数据后,我有很多"合并"他们重叠的领域,例如
Joh1n5D:o2d4e.81
我想分成
John Doe
15:24.81
我有几百个这样的,所以我希望这可以用正则表达式 - 我觉得它应该是,但是我可以完全理解匹配字符串中的多个部分并返回他们连在一起?
([0-9\:\.])/g
Works,但是为每个字符返回单独的匹配,而不是一个字符串?
答案 0 :(得分:2)
正则表达式将始终返回单独的匹配,因为这正是正则表达式的工作方式。此外,\d+|[:.]
可能稍好一些,因为每组数字都在一起。
至于你的perdicament,你可以使用类似(\d+|[:.])|[\s\S]*?
的东西,并在regex101上用$ 1替换,如this,添加的替换是去除所有其他角色(虽然,授予,它离开每个人都有一个空间,所以看起来很奇怪。
答案 1 :(得分:0)
另一个解决方案,但它会因语言而异,您可以使用两个正则表达式,例如:[\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
两个操作,但不需要使用组等。