【问题标题】:java regex to match multiple new line characters up to characterjava正则表达式匹配多个换行符直到字符
【发布时间】:2014-03-12 12:39:09
【问题描述】:

我有以下文本字符串,由一个文本块组成,后跟两个或多个 换行符(\n 可能是 \r)后跟另一个文本块,等等

多行文字

(两个或更多换行符)

多行特克斯

(两个或更多换行符)

我想将这个字符串分成与文本块数量一样多的子字符串,使用新行作为中断边界。

我试过了

public static int indexOf(Pattern pattern, String s) {
        Matcher matcher = pattern.matcher(s);
        return matcher.find() ? matcher.start() : -1;
    }


pStart[i-1] = start + indexOf(Pattern.compile("[\\n\\n]+"), text.substring(start)); 

但它不起作用。

有没有更好的处理办法?

【问题讨论】:

    标签: java regex


    【解决方案1】:

    您需要了解[\\n\\n] 仅表示一个换行符\n,因为它在字符类中。在字符类中,仅匹配列出的字符之一。

    你可以使用:

    \\n{2}
    

    而不是匹配换行符。

    【讨论】:

      【解决方案2】:

      任何简单的方法都是使用带有正则表达式的字符串拆分函数:

      String sampleText = new String("first\nsecond\n\r");
      String [] blocks = sampleText.split("\n{1,}[\r]?");
      

      以上假设 '1 或多个 \n' 和可选的 '1 \r'。
      您可以将正则表达式更改为 '\n{2,}[\r]?'两个或多个 '\n' 取决于你想要什么。

      Oracle Java 6 String Split Docs

      干杯!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-15
        • 2019-04-21
        • 2013-09-06
        • 2019-05-22
        • 2012-05-09
        • 1970-01-01
        • 1970-01-01
        • 2013-01-18
        相关资源
        最近更新 更多