[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите с регуляркой
Andy.D
Здравствуйте,

есть строка подобна: 12 текст1 76 текст1 текст2 12 текст2 76 текст 3 текст 4

необходимо получить то, что между 12 и 76. Делаю так:

/12.*76/ - возвращает 12 текст1 76 текст1 текст2 12 текс2 76
если так:
/12.*?76/ - возвращает только 12 текст 76
как сделать чтобы возвращалось коллекция всех вхождений?

P.S. Delphi XE TregEx.



Спустя 1 час, 2 минуты, 44 секунды (17.01.2011 - 15:20) maurise написал(а):
$text = '12 текст1 76 текст1 текст2 12 текст2 76 текст 3 текст 4';
preg_match_all("/12(.+)76/U", $text, $out, PREG_SET_ORDER);
В массиве $out будут все вхождения
Скобки нужны, чтобы в результат не попадали числа 12 и 76
Модификатор U - делает квантификаторы не жадными, чтобы получить все вхождения, а не то, что между первым 12 и последним 76

Спустя 7 минут, 41 секунда (17.01.2011 - 15:27) Andy.D написал(а):
Спасибо, сейчас проверю.

Спустя 2 часа, 9 минут, 46 секунд (17.01.2011 - 17:37) Andy.D написал(а):
/12(.*?)76/ - так заработало. Но результат не подходит.
Результат:

Всего совпадений 2

1 : 12 текст1 76
1.1 : текст1
2 : 12 текст2 76
2.1 : текст2

А хотелось бы
1 : текст1
2 : текст2

Спустя 9 минут, 48 секунд (17.01.2011 - 17:47) DedMorozzz написал(а):
Цитата
Модификатор U - делает квантификаторы не жадными
Ого! Откуда такая информация?

Спустя 3 минуты, 23 секунды (17.01.2011 - 17:50) DedMorozzz написал(а):
$a = '12 текст1 76 текст1 текст2 12 текст2 76 текст 3 текст 4';

preg_match_all('#12(.*?)76#',$a,$arr);
echo "<pre>";
print_r($arr[1]);
echo "</pre>";

Спустя 14 минут, 59 секунд (17.01.2011 - 18:05) Andy.D написал(а):
Вот тут проверяю: http://regexpr.ru/


DedMorozzz
Спасибо, попробую.

Спустя 1 час, 6 минут, 34 секунды (17.01.2011 - 19:12) maurise написал(а):
Цитата (DedMorozzz @ 17.01.2011 - 19:47)
Цитата
Модификатор U - делает квантификаторы не жадными
Ого! Откуда такая информация?

Из справочника. А разве не так?

Спустя 7 минут, 52 секунды (17.01.2011 - 19:20) DedMorozzz написал(а):
maurise
покажи smile.gif Ибо не так. Совсем не так http://irbis-team.com/15/20/4 читай начало

Спустя 23 дня, 20 часов, 21 минута, 9 секунд (13.02.2011 - 15:41) Dron19 написал(а):

$a = "12 текст1 76 текст1 текст2 12 текст2 76 текст 3 текст 4";

$a = preg_replace("/12(.*?)76(.*)\b/i","\\1",$a);
echo "<pre>" . $a . "</pre><br>";

Спустя 1 день, 11 минут, 27 секунд (14.02.2011 - 15:52) Velidan написал(а):
И опять доброго дня всем :) с праздником =) пусть все эмоции и отношения (как ваши атк и других людей к вам) всегда будут искренними и чистыми =)
(пишу здесь, не хочу плодить одинаковые темы)

опять таки возникла проблема с регулярками (казалось бы что научился уже составлять=\)
смотрите, у нас есть строка вроде

<td colspan="2"><a href="http://www.storybook.ru/russian/?i_5=93" class=nun><strong>Баба - яга и заморышек</strong></a></td>

надо вырезать название сказки и занести его в один массив, а сам адрес в другой (просто юреэльку)
сам код для этого вроде бы написал, но не могу никак задать шаблон для preg_match_all
чтобы находила это всё:
сначала приведу пример для юреэльки. У меня получилось такое регулярное выражение (но оно не хчоет работать) это тестовый код, на котором пробую все свои "велосипеды"

$html='<a href="http://www.storybook.ru/russian/?i_5=251" class=nun>';
$pattern = '/(?<=\<a href=")(http:\/\/)?(www\.)?([\d\w]+(\.[\d\w]+)) (\/([\d\w]+\/)(\?[\w\=\d]+))?(?="class\=nun>)/';
$html = preg_replace($pattern, "[deleted]", $html);
print_r ($html);

а оно всё равно не находит, можете подсказать в чем ошибка?
заранее спасибо, извините если надоедаю
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.