簡體   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