亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

正則表達式排除帶有偶數位數的尾隨零

正則表達式排除帶有偶數位數的尾隨零

九州編程 2022-07-20 20:24:36
我需要一些關于我正在嘗試編寫的正則表達式的支持。我收到一個總是由 8 位數字組成的字符串(如 12345678)。從這個字符串中,我需要刪除尾隨零,但始終保持偶數位數。例如:12345678 --> 1234567812345600 --> 12345612345000 --> 12345012003000 --> 120030對我來說,雖然部分是確保保持偶數。我嘗試使用一些(\d\d)+[^(00)]+,但它沒有達到我想要的效果。
查看完整描述

3 回答

?
HUWWW

TA貢獻1874條經驗 獲得超12個贊

像這樣的簡單正則表達式應該可以工作:

(?:00)+$

替換為空字符串。

我使用非捕獲組而不是字符類將 2 個零組合在一起,然后添加一個+量詞以僅匹配 2 個零的“倍數”,即偶數個零。

演示

如果您想要一個可以匹配而不是替換的正則表達式,則可以使用:

^\d+?0?(?=(?:00)*$)

懶惰地尋找數字,直到我們達到 0。我們是否匹配這個零?這取決于我們是否在它之后看到偶數個 0。但是,這不適用于全 0 的情況,例如0000,但是由于您說您永遠不會遇到此值,因此您不必太擔心。

演示


查看完整回答
反對 回復 2022-07-20
?
慕娘9325324

TA貢獻1783條經驗 獲得超4個贊

試試這個正則表達式:

(?:00)*$

用空白字符串替換每個匹配項。

點擊演示

解釋:

  • (?:00)*- 匹配 0 次或多次出現的00.

  • $- 斷言行尾。


查看完整回答
反對 回復 2022-07-20
?
墨色風雨

TA貢獻1853條經驗 獲得超6個贊

import java.util.regex.Matcher;

import java.util.regex.Pattern;


final String regex = "(00)*$";

final String string = "12345678\n"

     + "12400000\n"

     + "12005600\n"

     + "12340000\n"

     + "12000000\n"

     + "12340000\n"

     + "12345000";

final String subst = "";


final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);

final Matcher matcher = pattern.matcher(string);


// The substituted value will be contained in the result variable

final String result = matcher.replaceAll(subst);


System.out.println("Substitution result: " + result);

下面是結果


Substitution result: 12345678

1240

120056

1234

12

1234

123450


查看完整回答
反對 回復 2022-07-20
  • 3 回答
  • 0 關注
  • 133 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號