Unter der Annahme, dass Ihre Sätze korrekt interpunktiert sind, sollte es genau 1 Satz pro ?!.
geben, in diesem Fall können Sie verwenden. Die hauptsächlichen Ausnahmen sind wahrscheinlich Interrobangen (?!
, !?
) und Ellipsen (...
).
Wenn Ihre Zeichenfolge viele Sätze mit fehlenden Stopps oder doppelten Stopps enthält, besteht eine Möglichkeit darin, einfach die Daumen zu drücken und zu hoffen, dass sie sich mehr oder weniger aufheben.
Wenn es viele Doppelstopps gibt, aber nicht so viele fehlende, könnten Sie eine Regex anwenden, um jeden Durchlauf aufeinanderfolgender Stops durch einen einzigen .
zu ersetzen, bevor diese z. countc(prxchange('s/[\.!\?]{2,}/./',-1,string),'?!.')
.
Sie können doppelte Stopps oder Sätze berücksichtigen, die sowohl durch ein Fragezeichen als auch durch ein Ausrufezeichen (scheinbar "interrobang" genannt) unter Verwendung von regulären Ausdrücken gekennzeichnet sind. – user2877959
Entweder sollte Ihr Regex '+' (oder '{1,}') anstelle von '{2,}' enthalten, um einzelne Fragezeichen und Ausrufezeichen durch Punkte zu ersetzen. oder Ihre 'countc' Funktion sollte weiterhin'? 'und'! – user2877959
Messepunkt - behoben. – user667489