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 个或多个空格、"
或 '
个字符。
请注意,您不需要在字符 类.
内转义 .
和 ?
我正在尝试用 .!?就像在 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 个或多个空格、"
或 '
个字符。
请注意,您不需要在字符 类.
内转义.
和 ?