我有一个正则表达式将段落分成句子:
var sentences = /[^\.!\?]+[\.!\?]+/g;
我希望它仅在标点符号 ([\.!\?]+
) 后面有空格 \s
时才匹配。我尝试了 /[^\.!\?]+[\.!\?]+\s/g
,但这不起作用。
我想要这个的原因是因为目前如果中间有一个标点符号的单词(例如 about.me
),它会像 .
一样将其拆分在那里。当它没有时代表句子的结束。有什么想法吗?
例如:
如果我有这一段:
如果要解决的问题不像 about.me 的流量和导航数据那么明显或立即有用:天气。有几个应用程序试图利用人群来提供准确的信息?
我希望它只分成
['如果要解决的问题不像 about.me 的流量和导航数据那么明显或立即有用:天气。', '一些应用程序正在尝试利用人群来提供准确的信息?']
而目前它分为
['如果要解决的问题不像交通那样明显或立即有用。', '我和导航数据:天气。', '一些应用程序正在尝试利用人群来提供准确的信息?']
。
最佳答案
这是你想要的吗?
var str = "If the problem being solved isn't as apparent or immediately useful as traffic about.me and navigation data: weather. A few apps are trying to harness the crowd to provide accurate?";
str.match(/.+?(\.|\?)(\s|$)/g);
关于javascript - 如何使 Javascript 正则表达式仅在两个字符彼此相邻时匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17199854/