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

标签 java regex

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

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

例如,如果我有 n=17 且文本为 The Quick Brown Fox Jumps Over the Lazy Dog,则输出应为 The Quick Brown (15<17个字符),因为敏捷的棕色狐狸已经大于所需的大小(19>17 个字符)。

最佳答案

我想说也许是这样:

^.{1,17}(?!\S)

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

关于java - 是否可以使用正则表达式获取前 n 个字符但仅以整个单词结尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68925526/

相关文章:

java - 成功认证 spring security 后的自定义响应

java - 如何将类级别验证映射到特定字段?

JavaScript 正则表达式用 %21 替换 %2F

java - 为什么包名经常以 "com"开头

java - 从匿名声明中重写的方法获取代码

java - 动态定义 CSV 文件的字段分隔符和文本限定符

regex - 在 OSX 上使用 sed 设置 PermitRootLogin

php - url.rewrite-once 与 Kohana 和 urls

ios - NSRegularExpression-如何匹配可能带有括号,方括号等的文本

java - 如何让maven在本地仓库中安装测试包而不运行它们