如何在已知的令牌之前获得最近和最小的令牌?

时间:2010-10-26 12:01:33

标签: regex lazy-evaluation

我有一个看起来像的字符串:

  

“某些令牌”,“另一个令牌”,“尚未   另一个标记“,”必要的令牌“,”知道令“,”旁边   已知令牌“

如何使用给定字符串中的正则表达式获取“必要的令牌”?

我尝试了下一个表达式:

\"(.+)\","KNOWN TOKEN"

但它匹配从开头到“KNOWN TOKEN”部分的整个子字符串。我需要让它“懒惰”,但我无法管理如何实现这一点(我试图在第一组后面放置问号并且在里面它并没有用。)

3 个答案:

答案 0 :(得分:3)

将其更改为“除引号之外的任何内容”:

\"([^\"]+)\","KNOWN TOKEN"

您的(.+)some token......Necessary Token之间的所有内容(引用也是如此)相匹配。我的([^\"]+)可能只匹配Necessary Token,因此先前的引号将设置为Necessary Token的初始引号。

或者,如果您的编程语言允许,请使用一个好的CSV解析器,即使引号中的逗号也要小心,找到KNOWN TOKEN并在其前面取元素。

答案 1 :(得分:3)

\"([^\"]+)\","KNOWN TOKEN"

答案 2 :(得分:0)

或者您也可以使用:

.*\"(.+)\","KNOWN TOKEN"

Working link