2013-07-11 2 views
-1

Извините, мой английский не очень хорош. У меня есть проблема, я хочу сравнить две различные строки использования exp. Первая строка имеет структуру, такую ​​как a-b-1, например: mobile-phone-1. А вторая строка имеет структуру, такую ​​как a-b-1/d-e-2, например: mobile-phone-1/nokia-asha-23. Как мне это сделать? Вы можете использовать метод preg_match() или что-то подобное ... Этот метод для двух разных строк. Спасибо!Как написать reg exp для строки имеет структуру типа a-b-1 и a-b-1/d-e-2?

Код демо:

if (preg_match("reg exp 1", string1)) { // do something } 
if (preg_match("reg exp 2", string2)) { // do something } 

P/S: не должны заботиться слишком много о кода демо

+1

Что вы подразумеваете, сравнивая две строки? с preg_match вы сравниваете строку с регулярным выражением и, возможно, разделяете ее. можете ли вы объяснить больше о том, что вам нужно? – Boynux

+2

[Этот сайт] (http://www.regular-expressions.info/) расскажет вам. Вы также будете _learn_ намного больше, когда вы сделаете это самостоятельно ... –

+0

@Boynux Я обновил свой вопрос –

ответ

1
$pattern = '#[\w]+-[\w]+-[\d]+(/[\w]+-[\w]+-[\d]+)?#'; 
if (preg_match($pattern, $str, $matches)){ 
    return $matches; 
} 

Чтобы соответствовать короче использование строки:

$pattern = '#[\w]+-[\w]+-[\d]+#'; 

Чтобы соответствовать дольше:

$pattern = '#[\w]+-[\w]+-[\d]+/[\w]+-[\w]+-[\d]+#'; 

Чтобы соответствовать тем больше еще больше черточек:

$pattern = '#[\w]+-[\w]+-[\d]+/[\w-]+[\d]+#'; 
+0

Извините! какая строка может использовать этот шаблон? a-b-1 или a-b-1/d-e-2? –

+0

Его можно использовать для обнаружения обоих. В круглой скобке есть вопросительный знак, потому что это необязательно. –

+0

Я хочу иметь 2 шаблона для 2 разных строк, он может? не является обязательным. –

1
if(preg_match("/^([a-z]+)-([a-z]+)-([0-9]+)$/i",$string1)) 

if(preg_match("/^([a-z]+)-([a-z]+)-([0-9]+)\/([a-z]+)-([a-z]+)-([0-9]+)$/i",$string2)) 

«я» в конце концов, для случая чувствительности.

+0

Plz, escape '/' символ во 2-ом regexp – user4035

+0

Ох ... спасибо. –

+0

Спасибо. Я приведу только пример, но с длинной строкой я не могу его использовать. Пример: a-b-c-d-3 для первой строки и e-a-b-c-d/b-d-e-r-f-4 и т. Д. Я запускаю код и получаю ошибку. Ошибка синтаксиса: синтаксическая ошибка, неожиданное «if» (T_IF) в C: \ xampp \ htdocs \ demo \ preg_match.php –

1

Регулярное выражение с разъяснениями. Решается шаг за шагом.

$text1='mobile is for you--phone-341/nokia-asha-253'; //sample string 1 
$text2='mobile-phone-341'; //sample string 2 

    $regular_expression1='(\w)'; // Word    (mobile) 
    $regular_expression2='(-)'; // Any Single Character   (-) 
    $regular_expression3='(\w)'; // Word    (phone) 
    $regular_expression4='(-)'; // Any Single Character   (-) 
    $regular_expression5='(\d+)'; // Integer Number   (341) 

    $regular_expression6='(\/)'; // Any Single Character   (/) 

    $regular_expression7='(\w)'; // Word    (nokia) 
    $regular_expression8='(-)'; // Any Single Character   (-) 
    $regular_expression9='(\w)'; // Word    (asha) 
    $regular_expression10='(-)'; // Any Single Character   (-) 
    $regular_expression11='(\d)'; // Integer Number   (253) 

    if ($c=preg_match_all ("/".$regular_expression1.$regular_expression2.$regular_expression3.$regular_expression4.$regular_expression5.$regular_expression6.$regular_expression7.$regular_expression8.$regular_expression9.$regular_expression10.$regular_expression11."/is", $text1)) 
    { 
    echo "a-b-1/d-e-2 format string"; 
    } 
    else 
    { 
    echo "Not in a-b-1/d-e-2"; 
    } 
    echo "<br>------------------------<br>"; //just for separation 

if ($c=preg_match_all ("/".$regular_expression1.$regular_expression2.$regular_expression3.$regular_expression4.$regular_expression5."/is", $text2)) 
    { 
    echo "a-b-1 formate string"; 
    } 
    else 
    { 
    echo "Not in a-b-1 format"; 
    } 
+0

Я пробовал свой код, но еще раз всегда случается.Мои две строки могут быть $ string1 = 'a-b-1', $ string2 = 'a-b-1/d-c-c3'; или $ string1 = 'a-b-d-f-g-a-A-z-z-c-1', $ string2 = 'a-b-1/d-c-c-c-c-c-c-3' и так далее. –

+1

@KillerWhale хорошо читайте этот код. очень легко понять, как вы можете писать свои собственные регулярные выражения. это очень интересно. :) Думаю, вы сможете достичь своей потребности, если поймете это. требуется только несколько изменений. Примечание: эти два кода предназначены для формата, указанного в вашем вопросе. –

+0

Oh! Мне очень жаль, что я потерпел неудачу. Вы хороший человек. –

Смежные вопросы