簡體   English   中英

:使用Java中的Regex提取和替換子字符串

[英]:Extract and Replace a substring using Regex in Java

我有一個字符串,其中包含以下子字符串一次或多次:

(DynamicContent(abc.xyz))

我想用依賴於abcxyz的不同字符串替換整個子字符串。 因此,我想先分別提取它們。 所有這些都必須使用Java來完成。

例:
輸入字符串: (DynamicContent(box-shadow.css)):0px 2px 10px #330000;
輸出字符串: -moz-box-shadow:0px 2px 10px #330000; (取決於客戶端的瀏覽器)

我使用box-shadowcss找出輸出字符串。

\\(DynamicContent\\(box-shadow\\.css\\)\\)應該匹配,只是轉義所有元字符

在Java正則表達式中:

\\\\(DynamicContent\\\\(box-shadow\\\\.css\\\\)\\\\)

要在不同組中獲得盒形陰影和CSS,請使用:

\\\\(DynamicContent\\\\((box-shadow)\\\\.(css)\\\\)\\\\)如果只需要匹配此特定字符串或更多用途: \\\\(DynamicContent\\\\((.+)\\\\.(\\\\w+)\\\\)\\\\)

在這種情況下,我將為DynamicContent代碼段創建一個正則表達式模式,並為DynamicContent和您的兩個參數(abc和xyz)之前的文本添加匹配項組。 然后,您可以重復使用Matcher.find()方法掃描文本,並使用匹配器組的值構建輸出。

這將找到您的組:

List<String> matchList = new ArrayList<String>();
try {
    Pattern regex = Pattern.compile("\\(([^(]+)\\.([^)]+)");
    Matcher regexMatcher = regex.matcher(subjectString);
    while (regexMatcher.find()) {
        matchList.add(regexMatcher.group(1));
        matchList.add(regexMatcher.group(2));
    } 
} catch (PatternSyntaxException ex) {
    // Syntax error in the regular expression
}

適用於:

(DynamicContent(abc.xyz))

它會獲取內部括號和組的內容,無論以前是什么。 分組1和之后的分組。 分組2。

希望能幫助到你 :)

暫無
暫無

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

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