:在Java中使用正则表达式提取和替换子字符串

:在Java中使用正则表达式提取和替换子字符串,java,regex,string,replace,extract,Java,Regex,String,Replace,Extract,我有一个字符串,其中包含以下子字符串一次或多次: (DynamicContent(abc.xyz)) 我想用一个不同的字符串替换整个子字符串,该字符串取决于abc和xyz。因此,我想首先分别提取它们。 所有这些都必须使用Java来完成 示例: 输入字符串:(DynamicContent(box shadow.css)):0px 2px 10px#330000 输出字符串:-moz盒阴影:0px 2px 10px#330000(取决于客户端的浏览器) 我使用box shadow和css\(Dyn

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

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

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

我使用
box shadow
css
\(DynamicContent\(box shadow\.css\)\)查找输出字符串,这些字符串应该匹配,只需转义所有

在Java正则表达式中:

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

要获取不同组中的框阴影和css,请使用:


\\(DynamicContent\\(.w+)\\(\\w+)\\)
如果您只需要匹配此特定字符串或更通用的字符串:
\\(DynamicContent\\(.+)\\(\\w+)\\)
在这种情况下,我将为DynamicContent片段创建一个正则表达式模式,其中包含DynamicContent前面的文本和两个参数的匹配器组(abc和xyz)。然后您可以使用Matcher.find()方法重复扫描文本,并使用Matcher组的值生成输出。

这将查找您的组:

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
}
它获取内括号和组的内容,无论是在.to组1之前的内容,还是在.to组2之后的内容


希望有帮助:)

也许你可以给我们展示一个输入和输出的例子。这个问题需要更清楚一点。请进一步详细说明,可能的例子。字符串:(DynamicContent(box shadow.css))输出:-moz box shadow(取决于客户端的浏览器)我还希望在不同的字符串变量中使用“box shadow”和“css”。我已经编辑了我的问题。希望它现在很清楚。我还想检索不同的字符串框阴影和css。
(DynamicContent(abc.xyz))