javascript - 当段落以引号结尾时,使用 Javascript 将段落拆分成句子

标签 javascript regex

我正在尝试使用 Javascript 正则表达式将整个段落拆分为句子。

段落:

I visited a bar in Kansas. At the entrance I see, "Welcome to the bar!" While leaving that place I see message, "Good night!" I wondered how they changed the name.

我想把上面的段落分成句子。

  1. 我参观了堪萨斯州的一家酒吧。
  2. 在入口处,我看到“欢迎来到酒吧!”
  3. 离开那个地方时,我看到消息“晚安!”
  4. 我想知道他们是如何更改名称的。 (“晚安!”之间有一个换行符(<br>),我想知道如何..)

目前我正在使用正则表达式

var reg= /(\S.+?[.!?"'] | [.!?] + ["'!.?])(?=\s+[A-Z]|[^<br>]|$)/g;

但它没有将换行符( <br> )视为一个单独的句子。它将单词分成

  1. 我参观了堪萨斯州的一家酒吧。
  2. 在入口处,我看到“欢迎来到酒吧!”
  3. 离开那个地方时,我看到一条消息:“晚安!”我想知道他们是怎么改名字的。

要创建换行符需要输入 Shift+Enter 键。

最佳答案

我不确定我是否完全理解您需要什么,但这个正则表达式应该可以解决问题

var re = /(\w[^.!?]+[.!?]+"?)\s?/g;

您可以看到matches here (请注意正则表达式右侧表示全局的 g)。我相信它会根据你想要的内容正确地分割匹配。如果有问题请告诉我。

代码应该类似于(直接取自 http://regex101.com )

var re = /([^.!?]+[.!?]"?)\s?/g; 
var str = 'I visited a bar in Kansas. At the entrance I see, "Welcome to the bar!" While leaving that place I see message, "Good night!"\nI wondered how they changed the name.';
var m;

while ((m = re.exec(str)) != null) {
    if (m.index === re.lastIndex) {
        re.lastIndex++;
    }
    // View your result using the m-variable.
    // eg m[0] etc.
}

关于javascript - 当段落以引号结尾时,使用 Javascript 将段落拆分成句子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25188325/

相关文章:

javascript - 尝试仅以一定宽度隐藏导航菜单并滚动

javascript - $($ (".elem")[0]) 的 jQuery 最佳实践?

regex - VB.Net 删除第三个连字符后的所有内容

php - preg_replace 数字并在结果中使用

javascript - "curly braces always should be on the statement line"规则有那么重要吗?

javascript - dijit.Dialog 和远程内容的问题

javascript - javascript 客户端中的 Thrift 传输

python - python中的正则表达式问题

regex - 是否可以从 golang 中的字符串(复杂字符串)中检索子字符串

php - 密码的正则表达式必须包含至少 8 个字符,至少 1 个数字、字母和特殊字符