Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Регулярные выражения

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Дан текст. Необходимо вывести цифры за которыми не стоит знак +.
hiter02
Отправлено: 16 Мая, 2011 - 23:52:12
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.        
  3.         $str = " (3+5)-9*4 ";
  4.         //$result = preg_match_all('/\d[^+]{1}/',$str,$found);
  5.         $result = preg_match_all('/\d[^+]{1}/',$str,$found);
  6.         echo "Matches: $result<br>";
  7.         print_r($found);
  8.        
  9.   ?>

Выводит :
Matches: 3
Array ( [0] => Array ( [0] => 5) [1] => 9* [2] => 4 ) )
Подскажите, пожалуйста, как сделать что бы не было 5) 9* , а только 5 9 4?
Заранее благодарен!
 
 Top
Champion Супермодератор
Отправлено: 17 Мая, 2011 - 07:57:56
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




$result = preg_match_all('/\d(?!+)/',$str,$found);
 
 Top
Stierus Супермодератор
Отправлено: 17 Мая, 2011 - 10:07:04
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




/\d*?/ попробуй
(Добавление)
Не увидел "за которыми не стоит знак +" ... тогда вариант Чемпа выше
 
My status
 Top
movEAX
Отправлено: 17 Мая, 2011 - 11:35:19
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 750
Дата рег-ции: Авг. 2009  


Помог: 16 раз(а)




Champion пишет:
$result = preg_match_all('/\d(?!+)/',$str,$found);

По идее тут варнинг должен вылезти, правильней вcе же '#\d(?!\+)#'


-----
армия.. самое убогое место
 
 Top
algebra
Отправлено: 14 Июня, 2011 - 09:27:26
Post Id



Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




а если текст выглядит так (10-1-.....
и нужно вывести цифру которая идет после открытой скобки, первого числа и первого тире

preg_match_all ("/\(\d-\d{1,2}/" , $t , $l );
выводит и первую цифру и тире и вторую, а нужно только вторую
подскажите как?

(Отредактировано автором: 14 Июня, 2011 - 09:40:48)

 
 Top
EuGen Администратор
Отправлено: 14 Июня, 2011 - 10:50:04
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




/\((\d+)\-(\d{1,2})/

?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
algebra
Отправлено: 14 Июня, 2011 - 10:55:27
Post Id



Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




нет, также вытаскивает скобку первую цифру тире и вторую цифру
 
 Top
EuGen Администратор
Отправлено: 14 Июня, 2011 - 10:58:43
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Нужно только вторую?

/\(\d+\-(\d{1,2})/


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
algebra
Отправлено: 14 Июня, 2011 - 11:02:22
Post Id



Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




да, нужно только вторую цифру
/\(\d+\-(\d{1,2})/ - также выводит всё
(Добавление)
не понимаю как вот эту часть /\(\d+\- не отображать

(Отредактировано автором: 14 Июня, 2011 - 11:03:38)

 
 Top
EuGen Администратор
Отправлено: 14 Июня, 2011 - 11:50:21
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




А Вы сделайте var_dump:
PHP:
скопировать код в буфер обмена
  1. $test='(10-45 string...';
  2. preg_match_all('/\(\d+\-(\d{1,2})/', $test, $rgMatches);
  3. var_dump($rgMatches);

И посмотрите, в какой же элемент массива помещается нужная группа.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
algebra
Отправлено: 14 Июня, 2011 - 11:54:23
Post Id



Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




Спасибо, но у меня получилось вот так:
/(?<=\(\d\-)\d{1,2}/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB