我試圖在我的解決方案中「美化」某種類型的數字對象。這種特定類型的具有以下可能的表示,與它們相當的表示沿着:正則表達式::複數替換
xxxxxyyyyyyy => xxxxx-yyyyyyy
xxxxxyyyyyyyz => xxxxx-yyyyyyy-z
基本上,類型由5位表示FieldA
,7個位數表示FieldB
和可選的數字表示一個CheckDigit
。使用下面的正則表達式/替換模式:
Regex: ^(?<FIELDA>\d{5})(?<FIELDB>\d{7})(?<CHECKDIGIT>\d?)$
Replacement: ${FIELDA}-${FIELDB}-${CHECKDIGIT}
...結果:
xxxxxyyyyyyy => xxxxx-yyyyyyy- (wrong)
xxxxxyyyyyyyz => xxxxx-yyyyyyy-z (correct)
是否有可能修正僅使用正則表達式的第一表示/替換對? 我可以通過使用兩個不同的正則表達式來完成這項工作,但我想要一個更優雅的解決方案。一個使用單個正則表達式/替換對。
PS。我正在使用Java 1.7。
最快的方法 - >應該是'^(( \ d {5}?) ? \ d {7})(? \ d)?$'然後在一個回叫檢查組3是否匹配。否則,如果Java支持'\ G'構造,則嘗試單獨替換。 –
sln
即時通訊不知道我完全按照..謹慎闡述更多的隊友? – AweSIM