He visto muchas respuestas, pero ninguna parece ayudarme con mi situación. Necesito extraer los comentarios de este texto:

Comments: These are the comments and they end at this full stop. Remember, you can only use the personal information...

O este texto:

Comments: These are the comments and they end at this full stop. You can only use the personal information...

Un ejemplo de trabajo está aquí: https://regex101.com/r/apIT0O/1

Pero parece que no puedo meter esto en PHP. Puedo conseguir uno para trabajar con:

$pattern = "/(?<=Comments: )(.*?)(?= Remember, you can)/s";

Pero, ¿qué hay de malo en esto?

$pattern = "/(?<=Comments: )(.*?)(?= Remember, you can)|(?<=Comments: )(.*?)(?= You can)/s";

¡Muchas gracias!

1
Warren 14 dic. 2016 a las 09:11

2 respuestas

La mejor respuesta

Con preg_match_all puede obtener todos los resultados con su expresión regular.

Prueba esto:

/(?<=Comments: )(.*?)(?= Remember, you can)|(?<=Comments: )(.*?)(?= You can)/s

Explicación

Código de muestra:

<?php

$re = '/(?<=Comments: )(.*?).(?= Remember, you can)|(?<=Comments: )(.*?)(?= You can)/sm';
$str = 'Comments: These are the comments and they end at this full stop. Remember, you can only use the personal information...

Comments: These are the comments and they end at this full stop. You can only use the personal information...';
preg_match_all($re, $str, $matches);
print_r($matches);
?>

Ejecutarlo aquí

0
Rizwan M.Tuman 14 dic. 2016 a las 06:44

Puede obtener el valor de su deseo también preg_match de esta manera. Aquí está el código

<?php
$data="Comments: These are the comments and they end at this full stop. Remember, you can only use the personal information...";
preg_match("/(.*)(?<=Comments:)(.*?)(?= Remember, you can)(.*)/",$data,$m);
echo $m[2];
?>

Salida:

Estos son los comentarios y terminan en este punto.

O puedes usar

Print_r ($ m) imprimirá todo el valor que capture con regex. Espero que te ayude.

0
Kumar 14 dic. 2016 a las 06:56