昨天遇到一個小問題,需要批量處理一些用戶,而前台傳來的用戶格式如下,要提取括號中間的內容(不帶括號)
教師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的位置 |
參考:deerchao大大的正則表達式30分鍾入門教程
