javascript-如何提取两个单词之间最少的字符?
作者:互联网
我试图找到单词“ I”和“不同意”之间的最短字符序列(不区分大小写).我已经阅读了关于SO的所有类似问题,但是似乎没有一种解决方案适合我.这是引起我悲伤的例句:
As an American, I must disagree with you.
这是我对正则表达式模式的最佳猜测:
I(.*?)disagree
我只想捕获“必须”,但我要捕获更长的字符串“可以,我必须”.我希望不必指定在“ I”之后必须加上其他内容,例如空格.因为那样一来,我就不会像“我不同意”这样的句子来捕捉任何东西.我也不想坚持将“ I”大写.基本上,我只想要尽可能少的匹配.该站点是我用来验证解决方案的位置之一:
http://regexpal.com/?flags=gi\u0026amp;regex=I(.*?)不同意& input =作为美国人,我必须不同意您的意见.
解决方法:
通用方法是使用negative lookahead:
(I)(((?!\1).)*?) disagree
请参阅此处的demo.
注意,单词之间的组现在为$2.如果您不想这样做,可以重复第一个单词:
I((?:(?!I).)*?) disagree
但是我想说第一个版本更易于维护,特别是如果单词是bigger.
标签:regex-greedy,javascript,regex 来源: https://codeday.me/bug/20191122/2063775.html