En supposant que vos phrases sont correctement ponctuées, il devrait y avoir exactement 1 phrase par ?!.
, dans ce cas, vous pouvez utiliser countc(my_string,'?!.')
. Les principales exceptions sont probablement les interrobangs (?!
, !?
) et les ellipses (...
).
Si votre chaîne contient beaucoup de phrases avec des arrêts ou des doubles arrêts manquants, une option consiste simplement à croiser les doigts et espérer qu'ils s'annulent plus ou moins.
S'il y a beaucoup de doubles paliers mais pas tellement de paliers manquants, vous pouvez appliquer une regex pour remplacer toute palier d'arrêts consécutifs par un seul .
avant de les compter, par ex. countc(prxchange('s/[\.!\?]{2,}/./',-1,string),'?!.')
.
Vous pouvez tenir compte des doubles arrêts ou des phrases ponctués d'un point d'interrogation et d'un point d'exclamation (appelé apparemment 'interrobang') en utilisant des expressions régulières à la place. – user2877959
Soit votre regex devrait avoir '+' (ou '{1,}') au lieu de '{2,}' pour remplacer aussi les points d'interrogation simples et les points d'exclamation par des points; ou votre fonction 'countc' devrait continuer à compter'? 'et'! 'au dessus de' .'. – user2877959
Fair point - fixe. – user667489