通过排除一组非捕获的重复词来捕获单词

Capture words by excluding a non-capturing group of repeating words

我想从下面的字符串中提取所有内容,除了 "from"", from":

from Old French, from Latin innocentia, from innocent- ‘not harming’ (based on nocere ‘injure’).

这是我的正则表达式:

(?:from)(.*)(?:,.from)(.*)

对于这个正则表达式,我将得到 Old French, from Latin innocentiainnocent- ‘not harming’ (based on nocere ‘injure’). 作为结果。如何编辑我的正则表达式片段,使其可以匹配预期条件而不重复非捕获组 (?:,.from)?

结果应该是:

line="from Old French, from Latin innocentia, from innocent- ‘not harming’ (based on nocere ‘injure’)."
line.split(/, from|from/)

=>

[ '',
 ' Old French',
 ' Latin innocentia',
 ' innocent- ‘not harming’ (based on nocere ‘injure’).' ]

这可能足够接近了。 在线试用:https://repl.it/Chp8

您可以只使用正则表达式来拆分字符串。这将 return 以比使用回溯噩梦 .*.

更快的速度获得相同的结果

您可以使用此正则表达式(基于您的正则表达式)这样做:

(,.)?from

有关拆分的更多信息,请参见 here