2012-01-03 118 views
2

我是新用正则表达式,我用从一个列表中排除一个字故障排除的话正则表达式:如何从一个匹配列表

正则表达式:

(?<=[\s,*])[A-Za-z]\w*(?=[\s,*=;]) 

数据:

keyword1 Apple 
keyword2 Beer=0 
keyword1  China, Dime, Egg, Fly, Google, Koala, Lime 

其结果是:

Apple 
keyword2 
Beer 
keyword1 
China 
Dime 
Egg 
Fly 
Google 
Koala 
Lime 

Ť他结果我的预期是根本 苹果甜菜中国角钱蛋飞谷歌考拉石灰

的理念是: 如果我找到那么一个关键字1 OR关键字收集“下一步”字 如果“下一个”字用逗号分开的(,)然后收集逗号中的每个单词。 ,但不要在结果中包含关键字。

我已经试了一整天,但最后我意识到我需要这方面的帮助..

问候,

渡轮

+0

你的评论A可以是苹果,B可以是啤酒等,那么究竟是什么苹果和unwantedword'或'啤酒和theunwantedwords''之间的区别? – anubhava 2012-01-03 08:12:23

+0

抱歉的困惑(我会解决这个问题),unwantedword将在行的开头,它实际上需要的规则是:如果我发现不需要的单词,然后找到'下一个'的单词后不需要的单词,如果'接下来'的单词用逗号(,)分隔,然后用逗号分隔每个单词。 – FerryHtw 2012-01-03 08:22:15

+0

Regex有许多方言,每个方言都有自己特殊的转义序列:posix regex,perl regex,python regex,emacs regex ...你用哪种方言? (虽然他们共享所有一些像字符类principels) – math 2012-01-03 08:44:09

回答

2

如果你要排除的“关键字”,你可以做它是这样的:

(?!keyword)(?<=[\s,*])[A-Za-z]\w*(?=[\s,*=;]) 

结果: 苹果 啤酒 中国 角钱 蛋 飞 谷歌 考拉

+0

谢谢,它像一个魅力.. – FerryHtw 2012-01-03 08:36:17