通过排除一组非捕获的重复词来捕获单词
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 innocentia
和 innocent- ‘not harming’ (based on nocere ‘injure’).
作为结果。如何编辑我的正则表达式片段,使其可以匹配预期条件而不重复非捕获组 (?:,.from)
?
结果应该是:
Old French
Latin innocentia
innocent- ‘not harming’ (based on nocere ‘injure’).
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。
我想从下面的字符串中提取所有内容,除了 "from" 和 ", from":
from Old French, from Latin innocentia, from innocent- ‘not harming’ (based on nocere ‘injure’).
这是我的正则表达式:
(?:from)(.*)(?:,.from)(.*)
对于这个正则表达式,我将得到 Old French, from Latin innocentia
和 innocent- ‘not harming’ (based on nocere ‘injure’).
作为结果。如何编辑我的正则表达式片段,使其可以匹配预期条件而不重复非捕获组 (?:,.from)
?
结果应该是:
Old French
Latin innocentia
innocent- ‘not harming’ (based on nocere ‘injure’).
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。