繁体   English   中英

如何在javascript中处理正则表达式边界的收缩

[英]How do I handle contractions with regex word boundaries in javascript

我有一个nodejs脚本,它读入文件并计算字频率。 我目前将每一行都输入一个函数:

function getWords(line) {
    return line.match(/\b\w+\b/g);
}

几乎所有东西都匹配,除了没有收缩

getWords("I'm") -> {"I", "m"}

但是,我不能只包含撇号,因为我希望匹配的撇号是字边界:

getWords("hey'there'") -> {"hey", "there"}

有没有办法捕捉收缩,同时仍将其他撇号视为单词边界?

我相信你可以用正则表达式得到的最接近的是line.match(/(?!'.*')\\b[\\w']+\\b/g)但要注意,如果一个单词之间没有空格, a ' ,它将被视为收缩。

正如Aaron Dufour所提到的那样,正则表达式本身没有办法知道I'm是一个收缩,但hey'there不是没有。

见下文:

在此输入图像描述

您可以匹配字母和可能的撇号,后跟字母。

line.match(/[A-Za-z]+('[A-Za-z]+)?/g

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM