En fait il faut que tu définisses ce qui caractérise un début et une fin de phrase.
Si on considère qu'une phrase commence par un début de ligne ou par le point de la phrase précédente, et se termine par un point ou une nouvelle ligne, voila ce que j'ai fait pour capturer les phrases contenant les mots "con" et "idiot" :
Petite explication de ce motif regex :
( )

les parenthèses indiquent un groupe de caractères/mots que l'on veut capturer
(?: )

indique un groupe de caractères/mots non capturant (mais si il est lui même situé à l'intérieur de parenthèses simples, alors on va le capturer mais pas de façon séparée.
^

représente le début de la zone de texte
\.

représente le caractère point
\n

représente une nouvelle ligne
|

représente un "OU" logique
\W

représente un caractère qui ne fait pas partie d'un mot (espace, virgule, point-virgule, etc...)
Tu peux voir le résultat (et le modifier et améliorer) avec l'outil suivant :
http://regexr.com/3a5b1
Voila ce que ça donnerai en PHP avec preg_match_all() :
<?php
$texte="lorem ipsum idiot sit amet, consectetur
adipiscing elit. Aenean sit amet luctus elit. Suspendisse faucibus sollicitudin felis, tristique pellentesque purus tincidunt nec. integer a ex con ligula facilisis suscipit vel a dui. Nam fermentum gravida dolor, at interdum coni mattis non. usce pulvinar, sem
sed tincidunt sollicitudin, nulla diam tincidunt con, in pulvinar purus purus sit amet ipsum. Sed eget nunc diam. Proin non magna non purus suscipit congue. In in ornare orci. Donec consequat ante eu mi dictum porttitor. Aliquam ac idiot fringilla, tincidunt neque sed, varius sapien. Vestibulum volutpat ultricies odio et accumsan. Aenean sagittis, nulla nec rhoncus blandit, neque lectus tincidunt odio, sed sollicitudin lectus libero ac nulla. Nulla viverra finibus con.";
$motif_regex="/(?:^|\.|\n)([^\.\n]*(?:\Wcon\W|\Widiot\W)[^\.\n]*)/";
preg_match_all($motif_regex, $texte, $matches);
var_dump($matches[1]);
En fait il faut que tu définisses ce qui caractérise un début et une fin de phrase.
Si on considère qu'une phrase commence par un début de ligne ou par le point de la phrase précédente, et se termine par un point ou une nouvelle ligne, voila ce que j'ai fait pour capturer les phrases contenant les mots "con" et "idiot" :
[code](?:^|\.|\n)([^\.\n]*(?:\Wcon\W|\Widiot\W)[^\.\n]*)[/code]
Petite explication de ce motif regex :
( ) :arrow: les parenthèses indiquent un groupe de caractères/mots que l'on veut capturer
(?: ) :arrow: indique un groupe de caractères/mots non capturant (mais si il est lui même situé à l'intérieur de parenthèses simples, alors on va le capturer mais pas de façon séparée.
^ :arrow: représente le début de la zone de texte
\. :arrow: représente le caractère point
\n :arrow: représente une nouvelle ligne
| :arrow: représente un "OU" logique
\W :arrow: représente un caractère qui ne fait pas partie d'un mot (espace, virgule, point-virgule, etc...)
Tu peux voir le résultat (et le modifier et améliorer) avec l'outil suivant :
http://regexr.com/3a5b1
Voila ce que ça donnerai en PHP avec preg_match_all() :
[php]<?php
$texte="lorem ipsum idiot sit amet, consectetur
adipiscing elit. Aenean sit amet luctus elit. Suspendisse faucibus sollicitudin felis, tristique pellentesque purus tincidunt nec. integer a ex con ligula facilisis suscipit vel a dui. Nam fermentum gravida dolor, at interdum coni mattis non. usce pulvinar, sem
sed tincidunt sollicitudin, nulla diam tincidunt con, in pulvinar purus purus sit amet ipsum. Sed eget nunc diam. Proin non magna non purus suscipit congue. In in ornare orci. Donec consequat ante eu mi dictum porttitor. Aliquam ac idiot fringilla, tincidunt neque sed, varius sapien. Vestibulum volutpat ultricies odio et accumsan. Aenean sagittis, nulla nec rhoncus blandit, neque lectus tincidunt odio, sed sollicitudin lectus libero ac nulla. Nulla viverra finibus con.";
$motif_regex="/(?:^|\.|\n)([^\.\n]*(?:\Wcon\W|\Widiot\W)[^\.\n]*)/";
preg_match_all($motif_regex, $texte, $matches);
var_dump($matches[1]);
[/php]