是否可以使用正则表达式获取前 n 个字符但仅以整个单词结尾?

Som*_*ium 3 java regex

我需要从给定的字符串中获取第一个字符,最多达到给定的数量,但以整个单词结尾。我可以通过在单词边界处分割并在循环中逐字附加直到总长度超过阈值来解决它。

我想知道,是否可以完全使用正则表达式来完成,而不需要循环?
我知道如何选择 n 个字符 ( .{n}) 或 n 个完整单词 ( (\w+){n}),但不知道如何选择总共 n 个字符以内的单词。

例如,如果我有 n=17 并且文本是The quick brown fox jumps over the lazy dog,那么输出应该是The quick brown(15<17 个字符),因为The quick brown fox已经大于所需的(19>17 个字符)。

Jvd*_*vdV 6

我想说也许是这样的:

^.{1,17}(?!\S)
Run Code Online (Sandbox Code Playgroud)

查看在线演示。根据您的示例,您可能需要更明确,但对于给定的数据,它应该有效。