如果匹配并且不匹配子字符串,如何组合正则表达式?
例如:
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
我想获取包含"user.php"
和"member.php"
的网址但是如果包含"context"
匹配网址,如果包含" user.php"和" member.php"我可以用:
(user\.php|user\.php)
如果不包含" context":
^((?!context).)*$
如何合并(user\.php|user\.php)
和^((?!context).)*$
?
我的结果应该是:
http://www.domain.com/user.php?query=blah
http://www.domain.com/member.php?query=blah
感谢您的帮助...
答案 0 :(得分:2)
使用此模式
<击> ^(?=.*(?: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
答案 1 :(得分:1)
答案 2 :(得分:0)
^(?=.*?(?:\buser\b|\bmember\b)\.php)(?:https?:\/\/)?[^/]*/(?:(?!context).)*$
你可以尝试一下。参见演示。