想针对若干个相似文件抽取两段字符串之间的字符串,其中包含换行。比如说以abc开头的,cba结束的一段字符串,如下所示:
[code]1123 abc sads
dase
cba qewqeqw[/code]我希望是通过正则表达式获取到如下部分字符串:
[code]abc sads
dase
cba[/code]我晓得如果不用正则,其实用indexof,substring结合很容易就搞定,不过就是需要写比较多的代码,或者效率可能低些?
现在我想知道正则表达式是否可以轻松搞定?顺便想深入学习下正则。
先谢谢各位了。

解决方案 »

  1.   

    晕,不让我修改帖子?比如说以abc开头的,cba结束的一段字符串,如下所示: 
    [code=BatchFile]
    12121abc adasdas
    adsaw
    dsfd
    dfgdfweew
    cba 1312
    dasdas
    [/code]我希望是通过正则表达式获取到如下部分字符串: 
    [code=BatchFile]
    abc adasdas
    adsaw
    dsfd
    dfgdfweew
    cba
    [/code]
      

  2.   

     Pattern p = Pattern.compile("\Babc*cba\B");
     Matcher m = p.matcher("aaaaab");
     boolean b = m.matches();
    详细看一下API,再自己测试一下
      

  3.   

    没看明白要干什么,
    要截取给定的两个字符串之间的东西,是吗?要是这样的话,4楼的作废。假如以ABC开头,xyz结尾
    表达式为:
    ABC[.]*xyz
      

  4.   

    import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class Test1 {
        public static void main(String[] args) {
            String str = "12121abc adasdas\n" +
                         "adsaw\n" +
                         "dsfd\n" +
                         "dfgdfweew\n" +
                         "cba 1312\n" +
                         "dasdas";
            String regex = "abc.*?cba";
            Pattern pattern = Pattern.compile(regex, Pattern.DOTALL);
            Matcher matcher = pattern.matcher(str);
            while(matcher.find()) {
                System.out.println(matcher.group());
            }
        }
    }
      

  5.   


    哇哈哈,我就猜到了大叔要用DOTALL
      

  6.   

    本来我写的有内容的,只是code里我没指定具体的代码名,所以没有显示出来,我想修改也不让我修改。
      

  7.   

    本来我是用Pattern.MULTILINE,却一直得不到正确结果,很郁闷。
    没想到还有DOTALL这么精彩的东东。
      

  8.   

    网上资料很多啊,自己搜索下就什么都有了。
    google,迅雷什么的都可以