最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【已解决】Java中的正则表达式(java.util.regex)的替换

Java regex crifan 3584浏览 0评论

【问题】

希望实现java正则表达式中的替换。

但是不知道如何使用。

【解决过程】

1.参考了官网的语法:

Java 6: java.util.regex.Pattern

结果还是不会用.

2.后来参考:

Java 正则表达式替换的问题

虽然没有很好的演示如何使用.

但是让我看到了,原来是对应获得了matcher后,然后可以调用对应的replaceFirst等函数的.

3.另外也通过,对于NetBeans中,Ctrl+鼠标点击对应的

import java.util.regex.Matcher

中的Matcher:

ctrl mouse click Matcher

而找到了官网文档中的,除了replaceFirst之外的,其他函数:

比如replaceAll:

relace all func

如此,就可以自己去写代码了.

然后把对应的相关代码写出来了.

4.其中,涉及到替换中,想要使用named group的问题,也已解决:

【已解决】Java的正则表达式java.util.regex中的命名的组(named group)

 

5.最终,可以使用的代码是:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package retainfilename;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 *
 * @author Administrator
 */
public class RetainFilename {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        String filenameStr = "aa/haha.exe";
        
        //named group only support after Java 7
        //here is my java version:
        //Java: 1.7.0_09; Java HotSpot(TM) 64-Bit Server VM 23.5-b02
        Pattern filenameP = Pattern.compile("^.+/(?<filenamePart>.+)$");
        Matcher filenameMatcher = filenameP.matcher(filenameStr);
        boolean foundFilename = filenameMatcher.matches();
                
        System.out.println(filenameMatcher);
        System.out.println(foundFilename);
        
        String onlyFilename = filenameMatcher.replaceFirst("${filenamePart}");
        System.out.println(onlyFilename);
    }
}

 

【总结】

Java中,感觉库的使用方面,还是很不方便。

即使对于想要通过正则表达式的替换,都搞得这么麻烦。

还是Python用起来最爽。

转载请注明:在路上 » 【已解决】Java中的正则表达式(java.util.regex)的替换

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
82 queries in 0.167 seconds, using 22.13MB memory