我有一个字符串,其中包含以下子字符串一次或多次:
(DynamicContent(abc.xyz))
我想用不同的字符串替换整个子字符串,该字符串取决于abc
和xyz
。因此,我想首先分别提取它们。
所有这一切都必须使用Java完成。
例:
输入字符串:(DynamicContent(box-shadow.css)):0px 2px 10px #330000;
输出字符串:-moz-box-shadow:0px 2px 10px #330000;
(取决于客户端的浏览器)
我使用box-shadow
和css
找出输出字符串。
答案 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组。
希望有所帮助:)