Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: группировка и preg_match()
 
 автор: durak   (09.06.2007 в 15:41)   письмо автору
 
 

Можно ли использовать скобки только для группирвки, чтобы подвыражение не участвовало в $matches. В приведенном примере, чтобы получить значение text2 не в $matches[4], а $matches[3] ?

Строка: #text1(text2)

(#)?([\w\-]+)(\(([\w\-]*)\))?

   
 
 автор: Trianon   (09.06.2007 в 16:01)   письмо автору
 
   для: durak   (09.06.2007 в 15:41)
 

Нужно использовать (?:незахватывающую) подмаску

(#)?([\w\-]+)(?:\(([\w\-]*)\))? 

См. мануал http://softtime.ru/dic/id_dic=134&id_group=3

   
 
 автор: Disable   (09.06.2007 в 16:10)   письмо автору
 
   для: durak   (09.06.2007 в 15:41)
 

блин, не обновил страницу ))

<?php
preg_match
('|(#)?([\w\-]+)(\(([\w\-]*)\))?|','#text1(text2)',$arr);
print_r($arr);

preg_match('|(#)?([\w\-]+)(?:\(([\w\-]*)\))?|','#text1(text2)',$arr);
print_r($arr);
?>


((?:подвыражение)*)

   
 
 автор: durak   (09.06.2007 в 16:25)   письмо автору
 
   для: Disable   (09.06.2007 в 16:10)
 

Спасибо, ребята. Я знал об этой возможности, но все никак не мог вспомнить синтаксис. Полазил по инету, не нашел.

   
 
 автор: Disable   (09.06.2007 в 16:31)   письмо автору
 
   для: durak   (09.06.2007 в 16:25)
 

я пока искал меня опередили с ответом :)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования