Javascript 用于将文本拆分为带引号的句子并保留分隔符的正则表达式

Javascript RegExp for splitting text into sentences with quotes and keeping the delimiter

我正在尝试用 .!?就像在 this question 中所做的一样,但也考虑了句子开头和结尾可能出现的双引号。我正在使用这个:

let str = '" Non. Es-tu sûr ? "';
let result = str.match(/[^\.!\?]+[\.!\?]+/g);

console.log(result)

但是当我这样做时,? 之后的 2 个字符没有被捕获。所以不是得到:

['" Non.', 'Es-tu sûr ? "']

我得到:

['" Non.', 'Es-tu sûr ?']

是否有使用正则表达式拆分这些句子的方法?

看起来您需要做的就是在开头和结尾有选择地匹配 "s:

let str = '" Non. Es-tu sûr ? "';
console.log(
  str.match( /"?[^.!?]+[.!?]+(?: *")?/g )
);

如果您只想在最后的标点符号后匹配额外的尾随空格和 " 个字符,您可以使用

let str = '" Non. Es-tu sûr ? "';
let result = str.match(/[^.!?]+[.!?]+[\s"']*/g);
console.log(result)

regex demo[\s"']* 模式匹配 0 个或多个空格、"' 个字符。

请注意,您不需要在字符 类.

内转义 .?