如何匹配正则表达式中的多个单词
问题描述:
只是一个简单的正则表达式,我不知道该怎么写。如何匹配正则表达式中的多个单词
正则表达式必须确保一个字符串匹配所有3个单词。我看如何使它匹配的3任:
/advancedbrain|com_ixxocart|p\=completed/
,但我需要确保所有3个单词存在于的字符串中。
这里有话
- advancebrain
- com_ixxocart
- P =完成
答
使用lookahead assertions:如果这三个方面都存在
^(?=.*advancebrain)(?=.*com_ixxochart)(?=.*p=completed)
将匹配。
你可能想添加在你的搜索字词\b
工作的界限,以确保它们是匹配的完整的单词,而不是换句话说子(如advancebraindeath
)如果你需要避免这种情况:
^(?=.*\badvancebrain\b)(?=.*\bcom_ixxochart\b)(?=.*\bp=completed\b)
答
使用前瞻:
(?=.*\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).*$
花了太长时间的测试和精炼= /哦..还会张贴我的答案
所以,当你有一个例子字符串“等等等等示例文本advancebrain其中#com_ixxocart等等blahp = completedstuff”? – 2011-03-24 15:59:05
我个人会用3个正则表达式来做这件事。它可能相当丑陋,只有一个,可能会更慢。 – Pointy 2011-03-24 15:59:55
这些来自查询字符串吗?如果是这样,您可能不需要使用任何正则表达式 – racerror 2011-03-24 16:03:44