日期:2014-05-20  浏览次数:20762 次

[散分]关于正则表达式的问题,帮我解决的给100,帮顶的平分剩下100
我有一个字符串"第一章 章鱼来袭"

用正则想把"一"给取出来。我正则写的是取的是“第”"章"之间的字符

但是因为有两个"章"字,而且章字后边有时有空格,有时没有,没办法用特殊字符来代替。

所以取出来的就变成了"一章 "

请问这个正则应该怎么写,才能只取第一个章前面的字符串呢?

谢谢

------解决方案--------------------
我看见第一章后面有个空格。可以从这入手吧?
------解决方案--------------------
  有空格,也可以从其他字出发思路
------解决方案--------------------
一定要用正则吗?




好吧,我是来顶贴的
------解决方案--------------------
Pattern p = Pattern.compile(".*第(.?)章.*");

Matcher mm = p.matcher("第一章 章鱼来袭");

mm.find();

System.out.println(mm.group(1));

------解决方案--------------------
Pattern p = Pattern.compile(".*第(.*?)章.*");

Matcher mm = p.matcher("第十五章 章鱼来袭");

mm.find();

System.out.println(mm.group(1));


改了一下能匹配多个字符了
------解决方案--------------------
帮顶下~
------解决方案--------------------

Matcher m=Pattern.compile("第(.*?)章").matcher(你的字符串);
if(m.find())
   System.out.println(m.group(1));


------解决方案--------------------
好吧,我来顶的,上面貌似已经解决了
------解决方案--------------------
7楼的写法简短一些,好!!!
------解决方案--------------------
方法还是很多的,用正则的话可以这样

String s = "第一章 章鱼来袭";
String ss = s.replaceAll("第(.+?)章.*", "$1");
System.out.println(ss);