給定以下字串...
ABC DEF GHI: 319 022 6543 QRS : 531 450
我正在嘗試提取所有以數字開頭/結尾的范圍,并且可能包含空格,但我希望洗掉空格本身。
例如,上面應該產生兩個結果(因為有兩個“范圍”與我的目標相匹配)......
3190226543
531450
我的第一個想法是這個,但這與字母之間的空格相匹配......
([\d\s])
然后我嘗試了這個,但它似乎沒有任何效果......
([\d \s*])
這個很接近,但它也抓住了尾隨空格。此外,這會抓住空白,但不會洗掉它。
(\d[\d\s] )
如果無法在單個陳述句中洗掉空格,如果我可以正確提取它們,我總是可以對組進行后處理。最近的宣告很接近,但我怎么說它不以空格結尾,而只是一個數字?
那么缺失的表達方式是什么?此外,由于有時人們只是發布答案,因此解釋 RegEx 也有助于幫助其他人弄清楚如何做到這一點。我不僅喜歡解決方案,還喜歡解釋。:)
注意:我知道不同平臺上的 RegEx 之間可能存在一些差異,所以如果這些差異由讀者決定,那很好。我對理解正則運算式本身的基本機制比語法更感興趣。也就是說,如果有幫助,我會同時使用 Swift 和 C#。
uj5u.com熱心網友回復:
您無法在單個匹配操作中從匹配值內部洗掉空格。您將需要洗掉空格作為后處理步驟。
要匹配以數字開頭的字串,然后可以選擇包含任意數量的數字或空格,然后是可以使用的數字
\d(?:[\d\s]*\d)?
詳情:
\d- 一個數字(?:[\d\s]*\d)?- 一個可選的非捕獲組匹配[\d\s]*- 零個或多個空格/數字\d- 一個數字。
請參閱正則運算式演示。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/476517.html
