Я полагаю, вы сказали, что хотели это в JavaScript:
var s = 'I am Raktim Banerjee. I love to code.'
var regex = /\b([^!?. ]+)(?:(?: +)([^!?. ]+))*\b([!?.])/g
var m, numSentences = 0, numWords = 0;
do {
m = regex.exec(s);
if (m) {
numSentences++;
numWords += m[0].split(' ').length
}
} while (m);
console.log(numSentences + ' sentences, ' + numWords + ' words')
Вот вторая итерация.Я изменил регулярное выражение, чтобы распознать несколько приветствий, мистер, миссис и доктор (вы можете добавить дополнительные), и добавить примитивное суб-регулярное выражение для распознавания адреса электронной почты.И я также немного упростил оригинальное регулярное выражение.Я надеюсь, что это поможет (без гарантий, потому что проверка электронной почты слишком упрощена):
var s = 'Mr. Raktim Banerjee. My email address is x.y.z@nowhere.com.'
var regex = /\b((Mrs?\.|Dr\.|\S+@\S+|[^!?. ]+)\s*)+([!?.])/g
var m, numSentences = 0, numWords = 0;
do {
m = regex.exec(s);
if (m) {
numSentences++;
numWords += m[0].split(' ').length
}
} while (m);
console.log(numSentences + ' sentences, ' + numWords + ' words')