如何匹配正则表达式中的多个单词

问题描述:

只是一个简单的正则表达式,我不知道该怎么写。如何匹配正则表达式中的多个单词

正则表达式必须确保一个字符串匹配所有3个单词。我看如何使它匹配的3任

/advancedbrain|com_ixxocart|p\=completed/ 

,但我需要确保所有3个单词存在于的字符串中。

这里有话

  1. advancebrain
  2. com_ixxocart
  3. P =完成
+0

所以,当你有一个例子字符串“等等等等示例文本advancebrain其中#com_ixxocart等等blahp = completedstuff”? – 2011-03-24 15:59:05

+0

我个人会用3个正则表达式来做这件事。它可能相当丑陋,只有一个,可能会更慢。 – Pointy 2011-03-24 15:59:55

+0

这些来自查询字符串吗?如果是这样,您可能不需要使用任何正则表达式 – racerror 2011-03-24 16:03:44

使用lookahead assertions:如果这三个方面都存在

^(?=.*advancebrain)(?=.*com_ixxochart)(?=.*p=completed) 

将匹配。

你可能想添加在你的搜索字词\b工作的界限,以确保它们是匹配的完整的单词,而不是换句话说子(如advancebraindeath)如果你需要避免这种情况:

^(?=.*\badvancebrain\b)(?=.*\bcom_ixxochart\b)(?=.*\bp=completed\b) 
+0

我只给了一个输入字段来放置这个正则表达式,它的谷歌分析。他们展示了他们的简单/ yourregex /的例子。你会猜想这个lookahead会起作用吗?我不知道他们将用什么编程语言来运行正则表达式。 – UpHelix 2011-03-24 16:08:36

+0

GA(谷歌分析)支持lookahead。 http://www.lunametrics.com/blog/2007/08/08/regular-expressions-for-ga-bonus-iii-lookahead/ – UpHelix 2011-03-24 16:14:40

使用前瞻:

(?=.*\badvancebrain)(?=.*\bcom_ixxocart)(?=.*\bp=completed) 

顺序无关紧要。所有三个都是必需的。

+0

在开始时更好地固定正则表达式,否则你会得到可怕的表现所有三个都在场。 – 2011-03-24 16:05:07

+0

是的,你的更好! – Tom 2011-03-24 16:06:15

^(?=.*?p=completed)(?=.*?advancebrain)(?=.*?com_ixxocart).*$ 

花了太长时间的测试和精炼= /哦..还会张贴我的答案