gpt4 book ai didi

java - 正则表达式 : Splitting String into Fixed Length w/o Breaking Words AND Including Specials

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:43:48 26 4
gpt4 key购买 nike

我有以下正则表达式...

\S.{1,40}\b\W?

这会将一个字符串分解成长度不超过 40 个字符的更小的字符串,并且不会分解单词(包括标点符号)。但是,如果它在字符串的末尾结束(长度少于 40 个字符),它不会单独处理特殊字符,例如 #。我假设是因为正则表达式不将其视为一个词?

举个例子...

abcd (efghij # / klmno (# #)

结果会是……

abcd (efghij # / klmno 

结果应与输入相同(包括末尾的 (# #))。

也拿这个例子...

abcd (efghij # / klmno (# #)
blah blah etc etc words and more words and yet more words. What about these words?
And some more text for this string so that we can test things out.

在这种情况下,结果应该是...

abcd (efghij # / klmno (# #)
blah blah etc etc words and more words
and yet more words. What about these
words?
And some more text for this string so
that we can test things out.

然而,再次使用我当前的正则表达式,结果是......

abcd (efghij # / klmno 
blah blah etc etc words and more words
and yet more words. What about these
words?
And some more text for this string so
that we can test things out.

请注意缺少 (# #)。我需要将此 (# #) 包含在第一个结果中。

请注意,我使用 Pattern 和 Matcher 类在 Java 中使用这个正则表达式。

有什么建议吗?

最佳答案

我的猜测是你可能想要预处理或后处理你的 first-like 句子,否则表达式会变得相当复杂,那么下面的表达式可能会有点接近:

.{0,39}\S(?=$|\s)

表达式在 regex101.com 的右上面板中进行了解释, 如果你想探索/简化/修改它,在this link ,如果愿意,您可以观察它如何与一些样本输入相匹配。

Demo 2

关于java - 正则表达式 : Splitting String into Fixed Length w/o Breaking Words AND Including Specials,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57194185/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com