编程语言
首页 > 编程语言> > javascript-如何提取两个单词之间最少的字符?

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