REGEX:ブレイキング言葉を含むスペシャルO / W固定長に分割する文字列

Etep:

私は、次のREGEXを持っています...

\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.

(の##)が欠落していることに注意してください。私は、最初の結果に含まれる(##)、これを必要とします。

私は、パターンとMatcherのクラスを使用してJavaでこの正規表現を使用していますのでご注意ください。

助言がありますか?

エマ:

:私の推測では、それ以外の表現がかなり複雑になるだろう、多分次の式はやや近いだろう、あなたが事前にしたいか、あなたの最初のような文章をポスト処理するかもしれないということです

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

式は、右上のパネルに説明されてregex101.comあなたが/簡素化/それを修正探索したい場合は、とにこのリンクは、あなたが好きなら、それは、いくつかのサンプルの入力にマッチする方法を見ることができます。

デモ2

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=231148&siteId=1