ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

javascript-如何提取两个单词之间最少的字符?

2019-11-23 00:34:55  阅读:275  来源: 互联网

标签:regex-greedy javascript regex


我试图找到单词“ 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有