日期:2014-05-17  浏览次数:20801 次

急求正确的正则表达式写法!
只想得到字符串中的人名,人名之后用/nr标注了

代码如下:

srcstring = "/x  /x 当地/s 时间/n 16时/t 55分/t ,/w 胡锦涛/nr 乘坐/v 的/u 专机/n 抵达/v 哥本哈根/ns 凯斯楚普/nr 国际/n 机场/n 。/w 胡锦涛/nr 和/cc 夫人/n 刘永清/nr 受到/v 丹麦/ns 女王/n 玛格丽特/nr 二/m 世/g 和/cc 丈夫/n 亨里克/nr 亲王/n 、/w 腓/x 特/d 烈/a 王储/n 夫妇/n 和/cc 约阿希姆/nr 王子/n 等/u 热情/a 欢迎/vn 。/w 玛格丽特/nr 二/m 世/q 女王/n 为/p 胡锦涛/nr 举行/v 隆重/ad 欢迎/v 仪式/n 。/w /x  /x 胡锦涛/nr 在/p 机场/n 发表/v 书面/b 讲话/n 。/w 他/r 指出/v ,/w 中/b 丹/b 建交/v 62年/m 来/f ,/w 两/m 国/n 关系/n 发展/v 到/v 高水平/n 、/w 全方位/n 、/w 宽/a 领域/n 的/u 良好/a 局面/n 。/w 2008年/m ,/w 中/b 丹/b 建立/v 全面/a 战略/n 伙伴/n 关系/n 。/w";


List<String> result = new ArrayList<String>();
String regixstr = " " + "(.+?)" + "/nr";//现在的正则表达式是:以空格开头,以/nr结尾

Pattern p = Pattern.compile(regixstr);
Matcher m = p.matcher(srcstring);
while (m.find()) {
// result.add(m.group(1));
System.out.println(m.group(1));

}

目前的运行结果是:
/x 当地/s 时间/n 16时/t 55分/t ,/w 胡锦涛
乘坐/v 的/u 专机/n 抵达/v 哥本哈根/ns 凯斯楚普
国际/n 机场/n 。/w 胡锦涛
和/cc 夫人/n 刘永清
受到/v 丹麦/ns 女王/n 玛格丽特
二/m 世/g 和/cc 丈夫/n 亨里克
亲王/n 、/w 腓/x 特/d 烈/a 王储/n 夫妇/n 和/cc 约阿希姆
王子/n 等/u 热情/a 欢迎/vn 。/w 玛格丽特
二/m 世/q 女王/n 为/p 胡锦涛
举行/v 隆重/ad 欢迎/v 仪式/n 。/w /x  /x 胡锦涛

怎么样才能只得到姓名,其他的都过滤掉,如 胡锦涛、凯斯楚普等,务必用正则表达式完成。

拜谢!

------解决方案--------------------
远观了一下:"\\s+([^\\s]+)/nr"