Thi*_*ent 5 javascript regex string count coffeescript
已经有几个类似的问题:
我的情况有点不同。
我需要数数字符串中的句子数。
最接近我需要的答案是:
str.replace(/([.?!])\s*(?=[A-Z])/g, "$1|").split("|")
Run Code Online (Sandbox Code Playgroud)
这里唯一的问题是这个 RegEx 假设句子以大写字母开头,但情况并非总是如此。
更具体地说,我将一个句子定义为:
但是,如果一个句子包含一个数字,而数字本身又包含一个“.”或一个“,”,则该句子应被视为一个句子而不是两个句子。
最后但并非最不重要的一点是,我们可以假设,除了第一句话,一个句子前面都有一个空格。
给定一个随机字符串,我如何计算它包含的 Javascript(或 CoffeeScript)的句子数?
小智 5
解决您的问题的一种正则表达式是:
\w[.?!](\s|$)
Run Code Online (Sandbox Code Playgroud)
各部分如下:
\w - Word character
\[.?!] - Punctuation as specified.
(\s|$) - Whitespace character OR the end of the string.
Run Code Online (Sandbox Code Playgroud)
您可以使用字符类而不是组:
[\s|$]
Run Code Online (Sandbox Code Playgroud)
对于最后一个元素,但这不适用于https://regex101.com/。
在以下方面进行了测试:
与流行的看法相反,Lorem Ipsum 不仅仅是随机文本。它源于公元前 45 年的一段古典拉丁文学,已有 2000 多年的历史。弗吉尼亚州汉普登-悉尼学院的拉丁语教授理查德麦克林托克从 Lorem Ipsum 的一篇文章中查找了一个较为晦涩的拉丁词 consectetur,并查阅了古典文学中对该词的引用,发现了无可置疑的来源。Lorem Ipsum 来自西塞罗写于公元前45年的“de Finibus Bonorum et Malorum”(善与恶的极端)的 1.10.32 和 1.10.33 节。这本书是关于伦理学理论的论文,在文艺复兴时期非常流行。Lorem Ipsum 的第一行“Lorem ipsum dolor sat amet..”来自第 1.10 节中的一行。32.
并找到六个句子(在句子末尾加粗,而不是实际匹配)。请注意,如果您出于任何原因依赖不同的分组,则可能会造成问题。