Regex 在最后一个空格或超过最大值后拆分长字符串

Regex 在最后一个空格或超过最大值后拆分长字符串,regex,Regex,我试图根据行限制将一个长字符串分割成更小的块。以下面的例子为例 这是一个长标题。这是故意的。它的目的是测试拆分是否正常工作。它应该远远超过线路限制。如果它较短,则不会测试极限 如果行限制为70,则应将其拆分为 这是一个长标题。这是故意的。它的目的是测试 确保拆分工作正常。它应该远远超出了界限 限制。如果它较短,则不会测试极限 我提出的正则表达式如下所示,但它有一个问题 (\S*?.{1,70}(\s|\Z)) 如果一个单词因为某种原因太长,它不会分开,因为它只寻找空格。例如,如果我将此问题的

我试图根据行限制将一个长字符串分割成更小的块。以下面的例子为例

这是一个长标题。这是故意的。它的目的是测试拆分是否正常工作。它应该远远超过线路限制。如果它较短,则不会测试极限

如果行限制为70,则应将其拆分为

这是一个长标题。这是故意的。它的目的是测试

确保拆分工作正常。它应该远远超出了界限

限制。如果它较短,则不会测试极限

我提出的正则表达式如下所示,但它有一个问题

(\S*?.{1,70}(\s|\Z))

如果一个单词因为某种原因太长,它不会分开,因为它只寻找空格。例如,如果我将此问题的URL放入字符串中(删除http中的h,使其实际显示)

ttps://stackoverflow.com/questions/7528045/large-string-split-into-lines-with-maximum-length-in-java 备注:这是一个长标题。这是故意的。它的目的是测试 请注意,拆分工作正常。它应该远远超出了界限 备注限制。如果它较短,则不会测试极限

输出将是

ttps://stackoverflow.com/questions/7528045/large-string-split-into-lines-with-maximum-length-in-java

这是一个长标题。这是故意的。它的目的是测试

确保拆分工作正常。它应该远远超出了界限

限制。如果它较短,则不会测试极限

第一行远远超过了70个字符的限制,因为没有空格可以拆分,所以只超过了70个字符。如果在70个字符用完之前有一个存在,或者如果没有存在,那么在70个字符标记处拆分,我希望它在空白处拆分。正确的示例如下所示

ttps://stackoverflow.com/questions/7528045/large-string-split-into-lin

在java中,这是一个长头。好久不见了

目的。其目的是测试拆分是否有效

没错。它应该远远超过线路限制。如果是

短于此,它不会测试极限


不确定我是否理解这个问题,但这是否解决了您的问题:(\S*?[^]{1,70}(\S |\Z |))

您可以发布一个带有预期输出帮助的示例输入文本吗?您想获得什么?从正则表达式fiddle来看,这并不清楚。所谓“上限”是指给定的
n
(除非..)在第n个空格字符后拆分吗?另外,我建议您添加两个示例,分别显示每个示例所需的结果。很抱歉,我做得不好,我添加了一个示例,显示在正常情况下会发生什么,以及当某个大字本身超出限制时会发生什么,以及所需的输出。