используя php preg_match, предупреждение - PullRequest
1 голос
/ 13 октября 2011
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?Я испробовал множество разных идей, но на самом деле я не слишком разбираюсь в регулярных выражениях.

Ответы [ 2 ]

3 голосов
/ 13 октября 2011

/ - это то, что указывает начало и конец шаблона в вашем примере, что бы ни следовало после шаблона, это модификатор.

Итак, это:

/^([^/])/([A-Z])([^/]+)/([^/]+)/$/

Получается так:

/^([^/])/

с модификаторами ([A-Z])([^/]+)/([^/]+)/$/

Вы должны выйти из всех / или изменить индикатор начала и конца:

#^([^/])/([A-Z])([^/]+)/([^/]+)/$#
1 голос
/ 13 октября 2011

Вам нужно выйти из / вы используете, поставив \ перед ним. Или измените первый и последний / на что-то еще, например:

if (preg_match('|^([^/])/([A-Z])([^/]+)/([^/]+)/$|',"http://127.0.0.1:8008/BeiJing/FangChan/",$match)) print $match[0]; else

Но это регулярное выражение не будет соответствовать URL.

...