Javascript RegExp,用于将文本分成带引号的句子并保留定界符

时间:2018-11-09 11:24:54

标签: javascript regex sentence

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

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

console.log(result)

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

  

['“ Non。','Es-tusûr?”']

我得到:

  

['“ Non。','Es-tusûr?']

反正可以使用正则表达式拆分这些句子吗?

2 个答案:

答案 0 :(得分:1)

看起来您需要做的就是在开头和结尾都匹配"

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

答案 1 :(得分:1)

如果您只想在最后的标点符号之后匹配其他尾随空格和"字符,则可以使用

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

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

请注意,您无需在字符类中转义.?