Как объединить регулярное выражение, если совпадает и не соответствует подстроке?
Пример:
http://www.domain.com/user.php?query=blah
http://www.domain.com/member.php?query=blah
http://www.domain.com/user.php?query=blah&context=DkUdh8ShTkNNkwoIJkl
http://www.domain.com/member.php?query=blah&context=DkUdDh8ShTaDfkNNkwoIJkl
Я хочу получить URL, которые содержат "user.php"
а также "member.php"
НО я не хочу получать URL, если содержать "context"
Чтобы соответствовать URL, если они содержат «user.php» и «member.php», я могу использовать:
(user\.php|user\.php)
И если не содержит «контекст»:
^((?!context).)*$
Как совместить (user\.php|user\.php)
а также ^((?!context).)*$
?
Мои результаты должны быть:
http://www.domain.com/user.php?query=blah
http://www.domain.com/member.php?query=blah
Спасибо за помощь…
использовать этот шаблон
^(?=.*(?:user|member))(?!.*context).*$
сделай это:
^(?=.*\/(?:user|member)\b\.php)(?!.*context).*$
^ # begining of string
(?=.*\/(?:user|member)\.php) # look ahead for "/user.php" or "/memeber.php"(?!.*context) # negative look ahead for "context".*$ # anything to the end
Ты можешь использовать Негативный Lookahead сделать это.
^(?!.*context).*\b(?:user|member)\.php.*$
^(?=.*?(?:\buser\b|\bmember\b)\.php)(?:https?:\/\/)?[^/]*/(?:(?!context).)*$
Вы можете попробовать это. См. Демо.