2017-04-07 25 views
1

我想識別並提取數字值,然後加上'KGS'(數字和'KGS'之間沒有空格。字符串可能包含其他數字NOT'KGS'後面的數字應該被忽略例:正則表達式用於提取數字,後跟'KGS'

This is a 123 sample (500KGS) string. 

500應該提取

回答

2

我建議在這裏使用一個不太嚴格的模式,因爲你沒有驗證,b提取值。現在,您的正則表達式只會提取56578.5652,456類似的值,而像2,400.56這樣的值將不會匹配。

使用

/\d[\d.,]*(?=\s*KGS)/i 

regex demo。或者,捕獲:

/(\d[\d.,]*)\s*KGS/i 

結果在組1中。請參見another demo

\d[\d.,]*將匹配一個數字,然後是零個或多個數字,.,

/i修飾符會使正則表達式不區分大小寫。根據正則表達式的不同,您甚至可以使用此修改器的內聯版本(?i) - 只需將它放在模式開始處即可。

+1

兩者當然都有竅門。再次感謝。 – PaulP

1

這裏的答案: (\ d +(:?[,] \ d +))\ S(KGS)

+0

或[[\ d [\ d。,] *(?= \ s * KGS)'](https://regex101.com/r/g7InDO/1) –

+0

謝謝Pan Wiktor。有沒有簡單的方法來匹配'KGS'不區分大小寫? – PaulP

+1

當然,'/ \ d [\ d。,] *(?= \ s * KGS)/ i'或'(?i)\ d [\ d。,] *(?= \ s * KGS)' –