Java正则表达式拆分第一行和所有剩余行中的文本

Java正则表达式拆分第一行和所有剩余行中的文本,java,regex,string,multiline,Java,Regex,String,Multiline,给定一个由几行(包括空白行)组成的多行文本字符串,最有效的正则表达式是什么 完全匹配字符串,并且 将字符串分成两组,分别由第一行和后面的所有内容组成 尝试一个简单的表达,比如 (?m)(.*)((?:\s|.)*) 超出某个字符串长度(仅几百个字符)时不工作,导致堆栈溢出(!)。很多变化之后,同样的问题仍然存在…我不知道为什么必须使用正则表达式,但如果需要将其分为两组,我将匹配所有内容,直到可能的换行符序列,然后再匹配所有内容 (.*)[\r\n]*((?s).*) 我不知道为什么必须使用正

给定一个由几行(包括空白行)组成的多行文本字符串,最有效的正则表达式是什么

  • 完全匹配字符串,并且
  • 将字符串分成两组,分别由第一行和后面的所有内容组成
  • 尝试一个简单的表达,比如

    (?m)(.*)((?:\s|.)*)
    

    超出某个字符串长度(仅几百个字符)时不工作,导致堆栈溢出(!)。很多变化之后,同样的问题仍然存在…

    我不知道为什么必须使用正则表达式,但如果需要将其分为两组,我将匹配所有内容,直到可能的换行符序列,然后再匹配所有内容

    (.*)[\r\n]*((?s).*)
    

    我不知道为什么必须使用正则表达式,但如果需要将其分成两组,我会将所有内容匹配到可能的换行符序列,然后再匹配所有内容

    (.*)[\r\n]*((?s).*)
    

    我不知道为什么必须使用正则表达式,但如果需要将其分成两组,我会将所有内容匹配到可能的换行符序列,然后再匹配所有内容

    (.*)[\r\n]*((?s).*)
    

    我不知道为什么必须使用正则表达式,但如果需要将其分成两组,我会将所有内容匹配到可能的换行符序列,然后再匹配所有内容

    (.*)[\r\n]*((?s).*)
    

    使用限制拆分可以轻松做到这一点

    String[] a = str.split("\\R", 2);
    

    使用限制拆分可以轻松做到这一点

    String[] a = str.split("\\R", 2);
    

    使用限制拆分可以轻松做到这一点

    String[] a = str.split("\\R", 2);
    

    使用限制拆分可以轻松做到这一点

    String[] a = str.split("\\R", 2);
    

    为什么不只查找第一个换行符的索引,\n然后使用子字符串来获取2个新字符串?由于使用情况,ti必须是一个正则表达式,正好有2个组,即第一行和所有剩余行。至少,这似乎很容易描述。:-)用户“hwnd”给出了一个非常接近的答案,但出于某种原因,他已将其删除。无论如何,我做了一些轻微的修改,改进后的正则表达式似乎可以工作。修改后的正则表达式是
    (.*)(?:\r|\n)*((?s.*)
    ,它甚至包括只有一行的字符串。为什么不找到第一个换行符的索引,\n然后使用子字符串来获得两个新字符串呢?因为这个用例,ti必须是一个正则表达式,只有两个组,即第一行和所有剩余行。至少,这似乎很容易描述。:-)用户“hwnd”给出了一个非常接近的答案,但出于某种原因,他已将其删除。无论如何,我做了一些轻微的修改,改进后的正则表达式似乎可以工作。修改后的正则表达式是
    (.*)(?:\r|\n)*((?s.*)
    ,它甚至包括只有一行的字符串。为什么不找到第一个换行符的索引,\n然后使用子字符串来获得两个新字符串呢?因为这个用例,ti必须是一个正则表达式,只有两个组,即第一行和所有剩余行。至少,这似乎很容易描述。:-)用户“hwnd”给出了一个非常接近的答案,但出于某种原因,他已将其删除。无论如何,我做了一些轻微的修改,改进后的正则表达式似乎可以工作。修改后的正则表达式是
    (.*)(?:\r|\n)*((?s.*)
    ,它甚至包括只有一行的字符串。为什么不找到第一个换行符的索引,\n然后使用子字符串来获得两个新字符串呢?因为这个用例,ti必须是一个正则表达式,只有两个组,即第一行和所有剩余行。至少,这似乎很容易描述。:-)用户“hwnd”给出了一个非常接近的答案,但出于某种原因,他已将其删除。无论如何,我做了一些轻微的修改,改进后的正则表达式似乎可以工作。工作的修改正则表达式是
    (.*)(?:\r |\n)*((?).*)
    ,它甚至覆盖只有一行的字符串。要求是正则表达式。这被提供给进行处理的库,因此没有运行任何其他Java代码的选项。谢谢你和+1的建议。要求是正则表达式。这被提供给进行处理的库,因此没有运行任何其他Java代码的选项。谢谢你和+1的建议。要求是正则表达式。这被提供给进行处理的库,因此没有运行任何其他Java代码的选项。谢谢你和+1的建议。要求是正则表达式。这被提供给进行处理的库,因此没有运行任何其他Java代码的选项。谢谢你和+1的建议。