【发布时间】:2021-02-01 04:57:13
【问题描述】:
这个正则表达式:
var text = "Mr. Smith bought cheapsite.com for 1.5 million dollars, i.e. he paid a lot for it. Did he mind? Adam Jones Jr. thinks he didn't. In any case, this isn't true... Well, with a probability of .9 it isn't."
// break string up in to sentences based on punctation and quotation marks
var tokens = text.match(/(?<=\s+|^)[\"\'\‘\“\'\"\[\(\{\⟨](.*?[.?!])(\s[.?!])*[\"\'\’\”\'\"\]\)\}\⟩](?=\s+|$)|(?<=\s+|^)\S(.*?[.?!])(\s[.?!])*(?=\s+|$)/g);
由于 lookbehind assertions ((?<= ) and (?<! )) 不受支持而在 IOS Safari 上中断。是否有可以使用的用于句子标记化的等效(或类似)正则表达式?最好不要因为此处引用的其他 iOS Safari 兼容性问题而中断:(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#assertions)
ECMAScript (ECMA-262)
该规范中“RegExp”的定义。
【问题讨论】:
-
请发布您的正则表达式和有问题的示例,而不是链接
-
@anubhava 当然!
-
可以是任何一个或多个句子的段落字符串,不管怎样我都会发一个例子。
-
你能在 Safari 中试试这个正则表达式吗:
/(?:\s|^)(?:["'‘“'"\[({⟨].*?[.?!](?:\s[.?!])*["'’”'"\])}⟩]|\S.*?[.?!](?:\s[.?!])*)(?=\s|$)/gm -
@Moderators 关闭了这个问题,它不是重复的,它只是按类别相关。我要问的很具体,其他帖子没有答案。
标签: javascript ios regex lookbehind