您可以使用以下正则表达式(请注意,标志和表示法可能因您使用的语言而异):
/^(\w+)\s(\d+)(.*(?:\r?\n(?!\w+\s\d).*)*)/gm
请查看正则表达式演示。
详细信息:
^
- 行首(\w+)
- 第一组:一个或多个单词字符\s
- 一个空白字符(\d+)
- 第二组:一个或多个数字(.*(?:\r?\n(?!\w+\s\d).*)*)
- 第三组:
.*
- 除换行符外的任意0个或多个字符(?:\r?\n(?!\w+\s\d).*)*
- 零个或多个序列:
\r?\n
- 换行符...(?!\w+\s\d)
- 不跟随1个或多个单词字符、空格、1个或多个数字的内容.*
- 除换行符外的任意0个或多个字符(\w)+\s(\d+)((.|\R)+)
是你想要的,所以在转义后它应该是:(\\w)+\\s(\\d+)((.|\\R)+)
。
\R
是 Java 正则表达式中自 Java 8 可用的新组 - 它代表换行符。包括: \r\n
和 \n
。
如果你只允许一个换行符:
(\w)+\s(\d+)((.+)(\R.+){0,1})
我认为你应该更明确地指定你想要的输出,但从这个答案中你可以学习如何包含多行或最多两行。
/^(\w+)\s(\d+)(.*(?:\r?\n(?!\w+\s\d).*)*)/gm
。不确定您是否指定了正确的预期输出。 - Wiktor Stribiżew\n(?=\w+ \d)
处拆分字符串呢?或者你的环境不支持这样做? - bobble bubble