我需要regex,它将在同时包含两个单词的站点上运行。例如www.boots.com/**sport**/**nike**我在另一个问题中发现了类似的东西:
^(?=.*bnikeb)(?=.*bsportb).*$
这是正确的吗?第一个单词是一个类别,所以它介于"/"chars,第二个单词是产品名称,因此它可能出现在"one_answers"之间-"字符。
b
是一个单词边界,在比您预期的多得多的上下文中匹配。你需要限制上下文,因此你可以使用
^(?=.*(?:/|^)sport(?:/|$))(?=.*(?:[/-]|^)nike(?:[/-]|$)).*
这里,
(?=.*(?:/|^)sport(?:/|$))
-字符串的开头或紧接在/
之后、字符串的末尾或紧接在后面的/
字符必须包含sport
(?=.*(?:[/-]|^)nike(?:[/-]|$))
-字符串的开头或紧接在/
或-
之后、字符串的末尾或紧接在后面的/
或-
字符必须包含nike
请注意,此处不需要$
(与字符串末尾匹配(,因为.
与换行符以外的任何字符匹配。