2011-01-20 3 views
3

Пример входных данных:регулярное выражение, чтобы соответствовать 3 части из заданной строки

hjkhwe5boijdfg 

мне нужно разделить это на 3 переменных, как показано ниже:

  1. hjkhwe5 (любой длины, всегда заканчивается некоторым числом (может быть любым количество))
  2. б (всегда одну буквы, может быть любая буква)
  3. oijdfg (все остальные на торцевых, цифрах или буквах в любой комбинации)

У меня есть PHP preg_match все настройки, но я понятия не имею, как это сложное регулярное выражение. Может ли кто-нибудь дать мне руку?

ответ

1

У попробовать с:

$str = 'hjkhwe5boijdfg'; 
preg_match("/^([a-z]+\d+)([a-z])(.*)$/", $str, $m); 
print_r($m); 

выхода:

Array 
(
    [0] => hjkhwe5boijdfg 
    [1] => hjkhwe5 
    [2] => b 
    [3] => oijdfg 
) 

Пояснение:

^   : begining of line 
    (  : 1rst group 
    [a-z]+ : 1 or more letters 
    \d+  : followed by 1 or more digit 
)   : end of group 1 
    (  : 2nd group 
    [a-z] : 1 letter 
)   : end group 2 
    (  : 3rd group 
    .*  : any number of any char 
)   : end group 3 
$ 
+0

Coda был быстрее, но это объяснение просто прибил его. Теперь я понимаю регулярное выражение! Спасибо :) – David19801

+0

@ Давид: добро пожаловать. – Toto

0

Вы можете использовать preg_match как:

$str = 'hjkhwe5boijdfg'; 
if(preg_match('/^(\D*\d+)(\w)(.*)$/',$str,$m)) { 
     // $m[1] has part 1, $m[2] has part 2 and $m[3] has part 3. 
} 

See it

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