2010-08-31 119 views
0

我需要匹配使用reMatchNoCase("(listid)","listid car van listid dog cat listid house hotel")>的模式,所以listid是模式,并匹配,并再次下一个模式女巫是listid的一切。 所以,如果我转储复赛生病得到每一个结构开始listid和内匹配模式正则表达式coldfusion

这个内容是它应该是什么样子

  1. listid车面包车

  2. listid狗猫

  3. listid家酒店

etc ....

当我使用reMatchNoCase("(listid)","listid car van listid dog cat listid house hotel")>它只会创建一个结构“listid”,没有更像汽车范...我使用什么正则表达式(listid)后得到的一切?

感谢

回答

2

你可以使用这个表达式

listid.*?(?=(listid|$)) 

什么这个表达式所做的是找到一个“listid”后跟任意字符,直到下一个“listid”或“线($)的终结”。 ?=是寻找下一个“listid”的积极向前看,但不能使它成为比赛的一部分。在.*?中的?避免了.*的贪婪行为,并匹配紧接着的下一个先行字符串。

+0

救命不是这个词!!!谢谢 – loo 2010-08-31 05:36:35

+0

我需要$ newline作什么?如果我不想要它,它会被一个实际的新线弄乱吗? – loo 2010-08-31 06:02:02

+1

由于最后没有“listid”,因此我们必须展望未来捕捉最后一场比赛。因此使用'$'。如果你删除它,它将不会与你的例子中的'listid house hotel'相匹配。 – Gopi 2010-08-31 06:16:51

2

这个正则表达式可能会做;我不知道coldfusion的细节,但它匹配你想要的:

listid.*?(?=$|\slistid) 
+0

救命不是这个词!!!谢谢 – loo 2010-08-31 05:37:12