【问题标题】:Java replace matched regex [duplicate]Java替换匹配的正则表达式[重复]
【发布时间】:2013-04-16 04:37:13
【问题描述】:

对不起,我不得不重新写这个问题,我正在完成它并且有人关闭了它。 他们没有很好地解释为什么我不得不重新发布? 请告诉我有什么令人困惑的地方。

要点:我想用部分匹配替换正则表达式匹配 所以如果我正则表达式 hi 我希望它被替换为 {hi} 如果正则表达式匹配我想用 {at}

替换

这真是太棒了,看看这两个字母的单词被替换了 回报将是

this <h1>is</h1> awesome look <h1>at</h1> this two letter words get replaced

注意 is 和 at which 将如何匹配正则表达式 \b\w\w\b 将匹配一个替换

这是我正在处理的代码...不要判断它还没有完成,但我只是有点困惑,想知道是否有更简单的方法。我正在搜索字符串并找到匹配项,然后我将把它放到一个数组列表中并替换每个。问题是我要替换的一件事是 { 我想用 {{} 替换它 现在看一下,这将不断替换括号,因为我一直在添加它们......所以我的另一个想法是逐个字符地替换它们并添加到新的StringBuilder 对象?

ArrayList<String> replacements= new ArrayList<String>();
String s="::";
s+=command;
Pattern p= Pattern.compile("[!-~]");
Matcher match= p.matcher(this.execution);
while(match.find()){
    replacements.add(match.group());
}
StringBuilder string= new StringBuilder();
for(int i=0;i<this.execution.length();i++){ 
    String a=new String(execution.charAt(i));
    if(...){
        ...
    }
}
s+="::"+this.execution;

【问题讨论】:

    标签: java regex matcher replaceall


    【解决方案1】:

    试试

    str = str.replaceAll("(\\b\\w\\w\\b)", "<h1>$1</h1>");
    

    【讨论】:

    • $1 表示当前匹配吗?感谢您抽出宝贵时间
    • $1 表示当前比赛中的第 1 组。 group 是圆括号中的 expr
    • 那么我必须为每场比赛做 $1, $2 ..etc 吗?
    • 哦,我明白了。我很困惑什么是组。非常感谢你让它工作
    猜你喜欢
    • 2019-10-19
    • 1970-01-01
    • 1970-01-01
    • 2012-05-16
    • 1970-01-01
    • 2013-12-06
    • 2021-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多