簡體   English   中英

正則表達式用於刪除十進制字符串中的零

[英]regex for removing zeros in decimal string

我需要從十進制字符串中刪除零,例如:007.004(100.007)應該轉換為7.4(100.7)

我嘗試使用基於模式“ 0 +(\\ d)”的匹配器:

Pattern p = Pattern.compile(regex);
Matcher m = null;
try {

    m = p.matcher(version);
    while (m.find()) {
        System.out.println("Group : " + m.group());
        System.out.println("Group 1 : " + m.group(1));
        version = version.replaceFirst(m.group(), m.group(1));
        System.out.println("Version: " + version);
    }

但這得出7.4(10.7)。 有什么想法嗎?

您需要使用以下模式進行替換:

(\\([^)]+\\))|0+

和這個替換字符串

\\1 

換句話說,您需要先捕獲括號之間的所有內容,然后再尋找零。 使用replaceAll方法。

如果您要刪除非零數字之前的前導零,則可以使用以下模式匹配此類運行: "(?<!\\\\d)0+(?=[1-9])" 這甚至會使用零長度的超前查詢,因為您的標簽顯示您可能想這樣做。 它也將比您的使用起來更簡單,因為它與您想要保留的任何內容都不匹配:

Pattern p = Pattern.compile("(?<!\\d)0+(?=[1-9])");
Matcher m = p.matcher(version);;

version = matcher.replaceAll("");

如果只執行一次,則可以簡化為單一格式:

version = version.replaceAll("(?<!\\d)0+(?=[1-9])", "");

匹配另一個字符串時,無需在另一個字符串中執行替換:

while (m.find()) {
version = version.replaceFirst(m.group(), m.group(1));

您可以改用以下替代方法:

version = version.replaceAll("(^|\\.)0+", "$1");

暫無
暫無

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

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