首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

求正则表达式写法解决方案

2012-09-17 
求正则表达式写法各位道友:字符串如下“推动/v 中国/ns 特色/n 世界/n 城市/n 建设/vn”,如果使用正则表达式

求正则表达式写法
各位道友:
  字符串如下“推动/v 中国/ns 特色/n 世界/n 城市/n 建设/vn”,如果使用正则表达式:\\s([^\\s]+)/n,可以取出三个独立的名词“特色”,“世界”,“城市”,但是我希望能够把三个名词连贯起来,即希望得到的结果是“特色世界城市”,怎么写这个正则表达式?困扰了很久,望好心大侠救命!



[解决办法]

Java code
    /**     * @param args     */    public static void main(String[] args) {        String str = "我们/n 推动/v 中国/ns 特色/n 世界/n 城市/n 建设/vn";        str = str.replaceAll("(/n\\s+)(?=[^/]+/n\\s+)", "");        System.out.println("new str: " + str);                //然后下面就可以按楼主自己的方法。        Pattern p = Pattern.compile("\\s*([^\\s]+)/n\\s");        Matcher matcher = p.matcher(str);                while (matcher.find()) {            System.out.println(matcher.group(1));//获取被匹配的部分        }    }
[解决办法]
替换两次就可以了
Java code
    public static void main(String[] args) throws Exception {        String s = "我们/n 推动/v 中国/ns 特色/n 世界/n 城市/n 建设/n";        System.out.println(s);        s = s.replaceAll("\\s*(\\S+?)([^(/n)]$|[^(/n)]\\s+)+", "");        System.out.println(s);        s = s.replaceAll("/n\\s*", "");        System.out.println(s);    } 

热点排行