gpt4 book ai didi

javascript - 将字符串拆分为单词并保留定界符

转载 作者:行者123 更新时间:2023-11-30 08:41:15 24 4
gpt4 key购买 nike

我想将一个字符串(句子)拆分成一个单词数组并保留分隔符。


我已经找到并且我目前正在为此使用这个正则表达式:

[^.!?\s][^.!?]*(?:[.!?](?!['"]?\s|$)[^.!?]*) *[.!?]?['"]?(?=\s|$)

可在此处找到解释:http://regex101.com/

这完全符合我的要求,并且有效地生成了一个类似

的字符串

这是一个句子。

到一个数组

["This", "is", "a", "sentence."]

这里的问题是它包含空格和换行符。我希望字符串像它已经做的那样被解析为单词,但我还希望相应的空格和/或换行符属于前一个单词

我读过有关积极前瞻的文章,它应该寻找 future 的字符(空格和/或换行符),但在提取单词时仍将它们考虑在内。尽管这可能是我未能实现的解决方案。

如果有任何不同,我正在使用 JavaScript 和以下代码:

//save the regex -- g modifier to get all matches
var reg = /[^.!?\s][^.!?]*(?:[.!?](?!['"]?\s|$)[^.!?]*)*[.!?]?['"]?(?=\s|$)/g;

//define variable for holding matches
var matches;
//loop through each match
while(matches = reg.exec(STRING_HERE)){
//the word without spaces or newlines
console.log(matches[0]);
}

代码有效,但正如我所说,它包含空格和换行符

最佳答案

你可以尝试更简单的方法:

str.split(/\b(?!\s)/);

但是,请注意非单词字符(例如句号)将被视为另一个单词:

"This is a sentence.".split(/\b(?!\s)/);
// [ "This ", "is ", "a ", "sentence", "." ]

要解决这个问题,您可以使用一个字符类,其中包含不应以另一个词开头的字符:

str.split(/\b(?![\s.])/);

关于javascript - 将字符串拆分为单词并保留定界符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26184434/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com