当前位置: 移动技术网 > IT编程>开发语言>Java > java中 利用正则表达式提取( )内内容

java中 利用正则表达式提取( )内内容

2019年07月22日  | 移动技术网IT编程  | 我要评论

昨天遇到一个小问题,需要批量处理一些用户,而前台传来的用户格式如下,要提取括号中间的内容(不带括号)

教师10(0010)
教师11(0011)
教师9(009)
教师12(0012)
教师13(0013)
教师14(0014)
  
本来想用java的string.split()和substring()来搞定,但是需要处理多次比较麻烦,就用正则表达式了。虽然语法忘得差不多了,但是印象中用断言比较方便(关键希望结果不带括号)。打开regexbuddy试了下,轻松搞定:

下边是java实现代码:

复制代码 代码如下:

public list<string> getteacherlist(string managers){
        list<string> ls=new arraylist<string>();
        pattern pattern = pattern.compile("(?<=\\()(.+?)(?=\\))");
        matcher matcher = pattern.matcher(managers);
        while(matcher.find())
            ls.add(matcher.group());
        return ls;
    }

最后附一下用到的零宽断言:

宽断言 (?=exp) 匹配exp前面的位置
(?<=exp) 匹配exp后面的位置
(?!exp) 匹配后面跟的不是exp的位置
(?<!exp) 匹配前面不是exp的位置

 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网