正则表达式帮助而不是在Java中拆分

莫汉

我有一个需要替换子字符串的要求。

输入字符串为:

true-[Test5]procedure4.spec@john:380733712-1

预期的输出字符串是:

true-[Test5]procedure4.spec@X:380733712-1

单词john必须在此处替换为字符X。为此,我实现了如下的Java代码。

import java.util.Arrays;
import java.util.List;
public class Regex {
    public static void main(String[] args) {
        List<String> variableList = Arrays.asList("true-[Test5]procedure4.spec@mohan:180713133712267-1");
        for (String item : variableList) {
            if (item.contains("@") && item.contains(":") && item.split("@").length >= 1
                    && item.split(":").length >= 1) {
                StringBuilder firstString = new StringBuilder(item.split("@")[0] != null ? item.split("@")[0] : "");
                StringBuilder secondString = new StringBuilder(item.split(":")[1] != null ? item.split(":")[1] : "");;
                System.out.println(firstString + "@X:" + secondString);
            }
        }
    }
}

我是正则表达式的新手。我想在Java中使用Pattern和Matcher用正则表达式替换上面的代码。

维克多·史翠比维

使用

List<String> variableList = Arrays.asList("true-[Test5]procedure4.spec@mohan:180713133712267-1", "true-[Test5]procedure4.spec@Step2-1");
for (String item : variableList) {
    System.out.println(item + " => " + item.replaceFirst("@[^:]+:", "@X:"));
}

请参阅Java演示输出:

true-[Test5]procedure4.spec@mohan:180713133712267-1 => true-[Test5]procedure4.spec@X:180713133712267-1
true-[Test5]procedure4.spec@Step2-1 => true-[Test5]procedure4.spec@Step2-1

细节

此处查看在线正则表达式演示

您也可以使用捕获组/反向引用来避免重复@

.replaceFirst("(@)[^:]+:", "$1X:")

如果您必须匹配多个匹配项@(例如或)这会很有帮助([@#])@#

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章