我有这个链接:
http://anthropology.school.com/stuff/anthropology.999.ug.courses
正则表达式是什么,用于排除包含/stuff/
但仍包含999.ug.courses
的所有链接的所有链接(即使包含/stuff/
)
例如,上面的链接就可以了,因为它包含999.ug.courses
和/stuff/
我只是不想在链接中仅包含/stuff/
的那些。
另外,我是在一个简单的配置文本文件中用我正在使用的开源文件写的。
样品:
^http://([a-zA-Z0-9]*\.)*school.com/
^(file|ftp|mailto):
\.gif|GIF|jpg|com|JPG|js|png|php|PNG|pp|ico|atom|ICO|css|sit|eps|wmf|zip|ppt|mpg|xls|gz|rpm|tgz|mov|MOV|py|exe|pdf|jpeg|JPEG|bmp|BMP)$
[?*!@=]
(/about|/giving|/admissions|/Admissions|/studyabroad|/summer|/spring.in.ny|/winter|/academics|/life|/research|/global|/footer|/content|/AZ|/registrar|/its|/shc|/999|/explore.school|/prehealth|/eve|/people|/events|/IAA|sca|/aboutus|/subfields|/specialprograms|/newsevents|/resources|/employment)
感谢。
答案 0 :(得分:2)
如果这些是您需要匹配的唯一内容,这个正则表达式应该这样做(采用Perl格式):
/http:\/\/anthropology.school.com(\/\w+\/(?<!\/stuff\/)\w*)|(\/stuff\/anthropology\.999\.ug\.courses)/
它首先匹配URL的开头,然后匹配一个名为 stuff 或 /stuff/anthropology.999.ug.courses 的目录。
答案 1 :(得分:0)
它必须是一个正则表达式吗?你能做!/\/stuff\// || /999.ug.courses/
吗?
答案 2 :(得分:0)
您正在寻找条件子模式评估。以下正则表达式适合您:
~.*?(999\.ug\.courses)(?(1).*?|(?<!/stuff/))~
使用php代码:
preg_match('~.*?(999\.ug\.courses)(?(1).*?|(?<!/stuff/))~', $str, $m );
var_dump($m);
当我使用以下代码运行代码时
$str ="http://anthropology.school.com/stuff/anthropology.999.ug.courses";
我得到了:
array(2) {
[0]=>
string(64) "http://anthropology.school.com/stuff/anthropology.999.ug.courses"
[1]=>
string(14) "999.ug.courses"
}
但是当我在上面运行代码时(文本中没有anthropology.999.ug.courses
):
$str ="http://anthropology.school.com/stuff/anthropology.888.ug.courses";
我得到了:
array(0) {
}
以上是上述代码的live demo。
答案 3 :(得分:0)
怎么样:
preg_match('#^.+?/stuff/(?!.*999\.ug\.courses).*$#', $url));
您想要的网址是 与正则表达式匹配的网址。