2010-04-08 34 views
3

是否可以定义一个正则表达式模式, 3个术语与主串中的位置无关?正则表达式问题:单词的独立位置

例如。我的字符串是一样的东西"click here to unsubscribe: http://www.url.com"

的模式也应与"http:// unsubscribe click"

THX

+0

任何特定的原因,它将不得不用一个正则表达式来完成? – 2010-04-08 16:48:48

+1

了解您正在使用哪种语言会很有帮助。不同的编程语言支持不同的正则表达式语法。 – 2010-04-08 17:45:07

+0

你如何使用这个正则表达式?根据您是验证短字符串还是在更大的文本(如网页)中搜索此字符串,答案会有很大不同。 – 2010-04-08 21:25:53

回答

2

这是可能,但结果很复杂regexs,如工作:

/(click.*unsubscribe|unsubscribe.*click)/ 

基本上,你每个订单需要有不同的正则表达式部分。不理想。最好只使用多个正则表达式,每个术语一个。

+0

或者使用“索引”或等价物三次。 – 2010-04-09 02:42:07

9

您可以使用positive lookaheads。例如,

(?=.*click)(?=.*unsubscribe).*http 

是一个正则表达式,将向前看从当前位置(不向前推进)为click,那么对于unsubscribe,然后正常搜索http

+0

只有当“点击”和“取消订阅”在*“http”后面出现时才起作用,这与OP的第一个示例不同。 – 2010-04-08 21:21:55

+0

@Alan Moore:的确如此。纠正。 – 2010-04-09 09:43:40