已经有几个类似的问题:
我的情况有点不同。
我需要计算字符串中的句子数。
我最需要的答案是:
eventbrite
这里唯一的问题是这个RegEx假设一个句子以大写字母开头,但情况可能并非总是如此。
更具体地说,我将一句话定义为:
但是,如果一个句子包含一个数字,它本身包含一个" 。 "或者" ,",那么句子应该被视为一个句子,而不是两个。
最后但并非最不重要的是,我们可以假设,除第一句之外,一个句子前面有一个空格。
给定一个随机字符串,如何用Javascript(或CoffeeScript)计算它包含的句子数?
答案 0 :(得分:4)
解决问题的一个正则表达式是:
\w[.?!](\s|$)
部分内容如下:
\w - Word character
\[.?!] - Punctuation as specified.
(\s|$) - Whitespace character OR the end of the string.
您可以使用字符类而不是组:
[\s|$]
对于最终元素,但这不是https://regex101.com/。
测试了以下内容:
与流行的看法相反,Lorem Ipsum不仅仅是随机的文本。它 源于公元前45年的一段古典拉丁文学作品 它超过2000年 old。 Richard McClintock,拉丁教授 在弗吉尼亚州的汉普登 - 悉尼学院,查找了一个比较模糊的人 拉丁语单词,consectetur,来自Lorem Ipsum段落,然后去 通过古典文学中的词汇,发现了 无可争议的来源。 Lorem Ipsum来自1.10.32和 " de Finibus Bonorum et Malorum"西塞罗所写的(善与恶的极端),写于公元前45年。这本书是关于 道德理论,在文艺复兴时期非常流行。第一行 Lorem Ipsum," Lorem ipsum dolor sit amet ..",来自一条线 第1.10节。 32。
找到六个句子(粗体结尾的句子,而不是实际的匹配)。请注意,如果您因任何原因依赖它,则不同的分组可能会出现问题。
答案 1 :(得分:0)
我想出了一个简单得多的解决方案。
let text = text + " ";
const count = text.split(". ").length - 1;
console.log(count);
答案 2 :(得分:0)
如果字符串中句子的结尾处有一个字符,则此方法有效。
const text = ""; //insert your string here
const re = /[.!?]/;
const numOfSentences = text.split(re);
console.log(numOfSentences.length - 1);