Regex: String división en longitud fija w / o división de las palabras e incluyendo Especiales

Etep:

Tengo el siguiente Regex ...

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

Esto romperá una cadena en cadenas más pequeñas de no más de 40 caracteres de longitud y no romper las palabras (además incluye puntuacion). Sin embargo lo que no se encargará es caracteres especiales como # por su cuenta si termina al final de la cadena (menos de 40 caracteres de longitud.) Supongo que porque la expresión regular no lo ve como una palabra?

Tomemos el siguiente ejemplo ...

abcd (efghij # / klmno (# #)

El resultado será ...

abcd (efghij # / klmno 

Cuando el resultado debe ser el mismo que el de entrada (incluyendo el (# #) en el extremo).

Tome este ejemplo, así ...

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. 

En este caso, los resultados deben ser ...

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.

Sin embargo de nuevo, con mi expresión regular corriente por encima de los resultados son ...

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.

Tenga en cuenta que el (# #) no se encuentra. Necesito esto (# #) para ser incluido en el primer resultado.

Tenga en cuenta que estoy usando esta expresión regular en Java usando patrones y clases Matcher.

¿Alguna sugerencia?

Emma:

Mi conjetura es que es posible que desee antes o después del proceso de su primera como frases, de lo contrario la expresión se convertiría más bien complicado, entonces tal vez la siguiente expresión sería algo cercano:

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

La expresión se explica en el panel superior derecha de regex101.com , si desea explorar / Simplificar / modificarlo, y en este enlace , se puede ver cómo iba a coincidir en contra de algunas entradas de ejemplo, si te gusta.

Demo 2

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=231151&siteId=1
Recomendado
Clasificación