簡體   English   中英

java正則表達式捕獲或字符串開頭的制表符或空格

[英]java regexp capture or tabs or spaces on start of string

我嘗試捕獲組中的制表符或空格以使用它們全部替換或空格或制表符或兩者兼而有之,我喜歡將其設置為組,因為我喜歡在上面的字符串中使用它(Test_me)

這個例子不起作用

String content  = "\t\t<image.name>ABCD:44</docker.image.name>\n";
String content2  = "  <image.name>ABCD:44</docker.image.name>\n";
String source = "ABCD:44";
String destination = "${XXXX}";

content = content.replaceAll("(^[ \\s\\t]*)(<image.name>.*" + source + ")(.*?>)",
                            "$1Test_me\n" +
                            "$1" + Matcher.quoteReplacement("<image.name>" + destination) + "$3");

如果要替換第一個捕獲組(\\\\s*)捕獲的空格(空格、制表符等),則需要在第二個參數中省略它們(即$1 )。

演示:

import java.util.regex.Matcher;

public class Main {
    public static void main(String[] args) {
        String content = "\t\t<image.name>ABCD:44</docker.image.name>\n";
        String content2 = "  <image.name>ABCD:44</docker.image.name>\n";
        String source = "ABCD:44";
        String destination = "${XXXX}";

        content = content.replaceAll("(\\s*)(<image.name>.*" + source + ")(.*?>)",
                "Test_me\n" + Matcher.quoteReplacement("<image.name>" + destination) + "$3");
        System.out.println(content);
    }
}

輸出:

Test_me
<image.name>${XXXX}</docker.image.name>

暫無
暫無

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

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