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

时间:2011-10-09 12:06:26

标签: java regex string replace extract

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

(DynamicContent(abc.xyz))

我想用不同的字符串替换整个子字符串,该字符串取决于abcxyz。因此,我想首先分别提取它们。 所有这一切都必须使用Java完成。

例:
输入字符串:(DynamicContent(box-shadow.css)):0px 2px 10px #330000;
输出字符串:-moz-box-shadow:0px 2px 10px #330000;(取决于客户端的浏览器)

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

3 个答案:

答案 0 :(得分:0)

\(DynamicContent\(box-shadow\.css\)\)应匹配,只需转义所有metacharacters

在Java正则表达式中:

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

要在不同的组中获取box-shadow和css,请使用:

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

答案 1 :(得分:0)

在这种情况下,我将为DynamicContent片段创建一个正则表达式模式,其中包含DynamicContent之前的文本的匹配器组和两个参数(abc和xyz)。然后,您可以重复使用Matcher.find()方法扫描文本,并使用匹配器组的值构建输出。

答案 2 :(得分:0)

这将找到您的群组:

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组。

希望有所帮助:)