我想要接收大量文本(例如书籍章节),并创建一个句子数组。JS将文本拆分成句子
我当前的代码是:
text.match(/[^\.!\?]+[\.!\?]+["']?/g);
这仅适用于当文本与之一[结束。 ! ?]。如果最后一句话最后没有标点符号,它就会丢失。
如何将我的文本分成几个句子,允许最后一句没有标点符号?
我想要接收大量文本(例如书籍章节),并创建一个句子数组。JS将文本拆分成句子
我当前的代码是:
text.match(/[^\.!\?]+[\.!\?]+["']?/g);
这仅适用于当文本与之一[结束。 ! ?]。如果最后一句话最后没有标点符号,它就会丢失。
如何将我的文本分成几个句子,允许最后一句没有标点符号?
使用$
匹配字符串的结尾:
/[^\.!\?]+[\.!\?]+["']?|$/g
或者,也许你想允许空白字符结尾:
/[^\.!\?]+[\.!\?]+["']?|\s*$/g
正确!谢谢,但实际上你需要在字符串'''结尾之前允许字符。所以我做了'/ [^ \。!\?] +([\。!\?] + ['']?| $)/ g',但我认为它也可以是'/ [^ \。 ?\] + [\ \] + [“”] |!?。+ $/g' – Mirror318
这取决于文本字符,而
text.match(/[^\.!\?]+[\.!\?]+|[^\.!\?]+/g);
可以做工作。
(如果没有,你可以提供一些句子,你所无法比拟的什么工作?)
我最终得到了这个,但最后还是在字符串末尾加上'$':'text.match(/[^\.!\?]+[\.!\?]+ | [^\。!\?] + $/g);' – Mirror318
取决于你是否需要你的句子的标点符号在你的结果,你可以只使用“拆分”
var txt="One potato. Two Potato. Three";
txt.split(/[\.!\?]+/);
[ 'One potato', ' Two Potato', ' Three' ]
我试过'split',很好,没有什么会丢失的,但是我确实需要标点符号 – Mirror318
最后一句是否有换行符? – jstice4all
添加'\ n'即新行 – SaidbakR
\ n仅在文本中没有其他换行符时才起作用,这听起来不太可能。 – JJJ