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

Java教程 2025-08-07

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

教师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的位置