regex:^([^\/])/([A-Z])([^\/]+)/([^\/]+)/$
要匹配的字符串:http://127.0.0.1:8008/BeiJing/FangChan/
我使用preg_match()来测试
if (preg_match('/^([^\/])/([A-Z])([^\/]+)/([^\/]+)/$/',"http://127.0.0.1:8008/BeiJing/FangChan/",$match))
print $match[0];
else
print 'not match';
但收到警告:preg_match() [function.preg-match]: Unknown modifier '('
任何人都可以帮我写这个正则表达式,所以它对preg_match函数有效吗?我已经尝试了很多不同的想法,但我真的不太了解正则表达式。
答案 0 :(得分:3)
/
表示示例中模式的开始和结束,无论模式是修饰符之后是什么。
所以这个:
/^([^/])/([A-Z])([^/]+)/([^/]+)/$/
读取为:
/^([^/])/
使用修饰符([A-Z])([^/]+)/([^/]+)/$/
您必须转义所有/
或更改开始和结束指示符:
#^([^/])/([A-Z])([^/]+)/([^/]+)/$#
答案 1 :(得分:1)
您需要通过在其前面放置\来逃避/使用。或者将第一个和最后一个/更改为其他类似的内容:
if (preg_match('|^([^/])/([A-Z])([^/]+)/([^/]+)/$|',"http://127.0.0.1:8008/BeiJing/FangChan/",$match)) print $match[0]; else
但这个正则表达式与网址不匹配。