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

发布于 2024-12-08 15:57:15 字数 413 浏览 0 评论 0 原文

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

(DynamicContent(abc.xyz))

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

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

我使用box-shadow找出输出字符串和css

I have a string which contains the following substring one or more than one times:

(DynamicContent(abc.xyz))

I want to replace this whole substring with a different string which depends on abc and xyz. Therefore, I want to first extract both of them seperately.
All this has to be done using Java.

Example:
Input String : (DynamicContent(box-shadow.css)):0px 2px 10px #330000;
Output String : -moz-box-shadow:0px 2px 10px #330000; (Depends on the client's browser)

I find out the output string using box-shadow and css.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

层林尽染 2024-12-15 15:57:15

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

In this case I'd create a regex pattern for the DynamicContent snippet with matcher groups for the text before the DynamicContent and your two parameters (abc and xyz). Then you can scan your text using the Matcher.find() method repeatingly and build you output using the values of your matcher groups.

⊕婉儿 2024-12-15 15:57:15

\(DynamicContent\(box-shadow\.css\)\) 应该匹配,只需转义所有 元字符

在 Java 正则表达式中:

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

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

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

\(DynamicContent\(box-shadow\.css\)\) should match, just escape all the metacharacters.

In Java regex:

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

To get box-shadow and css in different groups use:

\\(DynamicContent\\((box-shadow)\\.(css)\\)\\) if you only need to match this particular string or a more all purpose: \\(DynamicContent\\((.+)\\.(\\w+)\\)\\)

说谎友 2024-12-15 15:57:15

这将找到您的组:

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

希望它有帮助:)

This will find your groups :

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
}

When applied to :

(DynamicContent(abc.xyz))

It gets the contents of the inner parentheses and groups whatever is before . to group 1 and whatever is after . to group 2.

Hope it helps :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文