繁体   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