|
|
|
| есть такое задание:
/a1/b2/c3/ -> {a,b,c}, {1,2,3}
/a1/b/c3/ -> {a,b,c}, {1,3}
/a1/3/ -> {a,3}, {1}
|
1столбец - исходные данные
2стоблец - должны получить 2 массива | |
|
|
|
|
|
|
|
для: а-я
(02.06.2010 в 08:46)
| | >есть такое задание:
вот эти слова пугают очень... | |
|
|
|
|
|
|
|
для: Trianon
(02.06.2010 в 10:45)
| | >>есть такое задание:
>
>вот эти слова пугают очень...
Вы о том, что это невыполнимая задача с помощью регулярных выражений? | |
|
|
|
|
|
|
|
для: а-я
(02.06.2010 в 14:49)
| | отчего ж. Думаю, в самой задачке ничего сложного нет. | |
|
|
|
|
|
|
|
для: Trianon
(02.06.2010 в 14:59)
| | ну я начал с:
preg_match_all('`([^\d]+)(\d+)`is', $string, $result);
|
но как сделать, что может и быть число.. а может и нет..? | |
|
|
|
|
|
|
|
для: а-я
(02.06.2010 в 15:04)
| | (\d+)? | |
|
|
|
|
|
|
|
для: vadimka
(02.06.2010 в 15:21)
| | благодарю.. пришел к такому:
но не выполняется послед. условие, т.е. если будет просто цифра, она должна оказаться в 1ом массиве | |
|
|
|
|
|
|
|
для: vadimka
(02.06.2010 в 15:21)
| | (\d*) - так по моему проще | |
|
|
|
|
|
|
|
для: а-я
(02.06.2010 в 15:04)
| | | |
|
|
|
|
|
|
|
для: а-я
(02.06.2010 в 08:46)
| | вот если бы работали с отдельной частью, т.е. разбили по "/" то можно было использовать регулярку
а как ее на все строку использовать? | |
|
|
|
|
|
|
|
для: а-я
(02.06.2010 в 16:05)
| | не уверен, пусть знающие товарищи поправят
<?php
$str= "/a1/b/c3/";
$pattern="#([a-z])([\d]?)#";
preg_match_all($pattern,$str,$out);
echo "<pre>";
print_r($out[1]);
echo "<pre>";
print_r($out[2]);
?>
|
| |
|
|
|
|
|
|
|
для: vadimka
(02.06.2010 в 17:22)
| | Да и вариант Trianon'a подходит....
Может это подойдет более менее?
<?php
$str= "/a1/3/c2/b/";
$pattern="#\/?([a-z]?)([0-9]?)\/#";
preg_match_all($pattern,$str,$out);
echo "<pre>";
print_r($out[1]);
echo "<pre>";
print_r($out[2]);
?>
|
| |
|
|
|
|
|
|
|
для: Tonik992
(02.06.2010 в 22:39)
| | Благодарю.. протестирую... вроде то что надо | |
|
|
|
|
|
|
|
для: а-я
(02.06.2010 в 08:46)
| | получилось так реализовать...
\/?([a-z0-9]*?)([0-9]*?)\/
|
единственное, если просто число то оно оказывается во 2ом массиве а надо в первый .. | |
|
|
|
|
|
|
|
для: а-я
(03.06.2010 в 13:24)
| | Тогда я вообще не понял сути твоих массивов.. Что должно быть в первом массиве, а что во втором? | |
|
|
|
|
|
|
|
для: Tonik992
(03.06.2010 в 14:39)
| | $pattern="#\/?([a-z0-9]*?)([0-9]*?)\/#";
Зачем звездочки ты используешь в своей регулярке???
$pattern="#\/?([a-z0-9]?)([0-9]?)\/#"; думаю эта поможет.. | |
|
|
|
|
|
|
|
для: а-я
(03.06.2010 в 13:24)
| | а я ведь показал, как разбирается эта штука.
Причем независимо от того, сколько там букв или цифр. | |
|
|
|
|
|
|
|
для: Trianon
(03.06.2010 в 17:08)
| | благодарю... и Ваш вариант работает.
просто немного усложнил задачу, строка может содержать и цифры.
получается в послед. массив попадает число на которое оканчивается строка, а все остальное в первый массив.
т.е.
/a1b2c3/aa11bb22cc/ccc333/ -> {a1b2c, aa11bb22cc, ccc}, {3,333}
|
| |
|
|
|
|
|
|
|
для: а-я
(03.06.2010 в 20:03)
| | А вот это - извините.
Это в грамматику с просмотром лишь на один символ вперед не вписывается ну никаким боком.
А следовательно обязано считаться ересью. | |
|
|
|