我想要接收大量文本(例如書籍章節),並創建一個句子數組。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