:在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))