test - Javascript RegExp para dividir el texto en oraciones y mantener el delimitador
regexp javascript (3)
Estoy tratando de usar la división de javascript para obtener las oraciones de una cadena pero mantener el delimitador, por ejemplo!?.
Hasta ahora tengo
sentences = text.split(/[//.!?]/);
que funciona pero no incluye la puntuación final para cada oración (.!?).
¿Alguien sabe de una manera de hacer esto?
Intente esto en su lugar: -
sentences = text.split(/[//.!/?]/);
?
Es un carácter especial en expresiones regulares, así que hay que escapar.
Perdón, he perdido la lectura de su pregunta: si desea mantener los delimitadores, debe usar la función de match
no split
Consulte esta pregunta.
La siguiente es una pequeña adición a la respuesta de Larry que coincidirá con las oraciones parantéticas:
text.match(//(?[^/./?/!]+[/.!/?]/)?/g);
aplicado en:
text = "If he''s restin'', I''ll wake him up! (Shouts at the cage.)
''Ello, Mister Polly Parrot! (Owner hits the cage.) There, he moved!!!"
da
["If he''s restin'', I''ll wake him up!", " (Shouts at the cage.)",
" ''Ello, Mister Polly Parrot!", " (Owner hits the cage.)", " There, he moved!!!"]
Necesitas usar match no split.
Prueba esto.
var str = "I like turtles. Do you? Awesome! hahaha. lol!!! What''s going on????";
var result = str.match( /[^/.!/?]+[/.!/?]+/g );
var expect = ["I like turtles.", " Do you?", " Awesome!", " hahaha.", " lol!!!", " What''s going on????"];
console.log( result.join(" ") === expect.join(" ") )
console.log( result.length === 6);