如何使用split(RegExp())提取纯完整单词?求适配正则表达式
嘿,这事儿好办!要把这段带标点、换行的文本拆成纯单词列表,关键是写对分隔符的正则表达式,既能把逗号、句号、空格这些分隔符都干掉,还能保住You're这种带撇号的完整单词。
直接上解决方案,分两步走:
1. 写对匹配分隔符的正则表达式
我们需要匹配所有非字母、非单词内部撇号的字符(比如空格、逗号、句号、换行符),而且连续的这些字符要当成一个分隔符处理,避免拆分出多余的空元素。对应的正则是:
/[^a-zA-Z']+/g
[^a-zA-Z']:否定字符集,意思是“匹配任何不是大写字母、小写字母或撇号的字符”+:匹配一个或多个连续的上述字符,确保多个分隔符(比如逗号+空格)只会被当成一次分隔g:全局匹配标记,确保整个文本的所有分隔符都被处理
2. 拆分文本并过滤空元素
用这个正则调用split()后,开头的空格可能会产生一个空字符串,所以最后用filter()把空元素去掉就行。完整代码如下:
const text = ` You find so many people are fimble But you, you are mostly humble I love the way you wear your hair, Spreading your style everywhere. You're like a style fountain. Enough for a whole mountain. `; const wordList = text.split(/[^a-zA-Z']+/).filter(word => word !== ''); console.log(wordList);
运行这段代码,得到的结果完全符合你的期望:[You, find, so, many, people, are, fimble, But, you, you, are, mostly, humble, I, love, the, way, you, wear, your, hair, Spreading, your, style, everywhere, You're, like, a, style, fountain, Enough, for, a, whole, mountain]
如果你的文本里还可能出现数字、下划线这类不想算作单词的字符,这个正则也完全适用——因为我们只保留字母和撇号,其他杂七杂八的都会被当成分隔符去掉。
内容的提问来源于stack exchange,提问作者TRAGEN
相关产品推荐
相关产品推荐

