簡體   English   中英

正則表達式比較字符串中的數字

[英]regex to compare numbers from string

我有這樣的字符串:

1.2.3
1.4.0.136
V312
V10
2.2.2
r1elease2.0.0
Vr 1.5.1

我想獲得正則表達式,該正則表達式應從這些字符串中提取版本(無字符串)並按排序順序排列。 一次可以傳遞任何兩個字符串進行比較。

1.2.3 should become 1.2.3 (no change)
1.4.0.136 should become 1.4.0.136 (no change)
V312 should become 312 
V10 should become 10
2.2.2 should become 2.2.2 (no change)
r1elease2.0.0 should become 2.0.0
Vr 1.5.1 should become 1.5.1

我試過/[^0-9\\.]+/g但在r1elease2.0.0情況下r1elease2.0.0因為此字符串變為12.0.0 ,這是不正確的。

對於示例數據,可以使用:

\\d+(?:\\.\\d+)*\\b

這將匹配一個或多個數字,后跟一個零或多個重復的點和一個或多個數字的重復模式。 它以單詞邊界\\b結尾,因此r1elease2.0.0中的1不匹配。

說明

  • \\d+一個或多個數字
  • (?:非捕獲組
    • \\.\\d+匹配一個點和一個或多個數字
  • )*關閉非捕獲組並重復零次或多次
  • \\b字邊界

嘗試:

(?<=^|[\w\s])\d+(?:\.?\d+)*$

演示版

你可以做:

(\\w\\s?)*?(\\d+(?:\\.\\d+)*\\b)

並用捕獲的組2進行替換。 \\d+(?:\\.\\d+)*\\b部分由第四胎解釋。 部分(\\w\\s?)*? 在替換中被丟棄。 輸出:

1.2.3
1.4.0.136
312
10
2.2.2
2.0
1.5.1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM