Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Паттерн на PHP / 6 сообщений из 6, страница 1 из 1
31.03.2014, 13:14
    #38600742
Andrew_nik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Паттерн на PHP
Есть паттерн на .NET для извлечения символов между одинарными кавычками
Код: c#
1.
'(?:\\'|[^'])*'


Пробовал так, но не работает:
Код: php
1.
/(?P<sd>(?<=')(?:\\')|(?:[^'])*(?='))/i

где sd - именованная группа

Подскажите как перевести его на PHP?
...
Рейтинг: 0 / 0
31.03.2014, 13:23
    #38600769
r u
r u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Паттерн на PHP
Andrew_nik,

да также все
$pattern = "/'(?:\\'|[^'])*'/";
...
Рейтинг: 0 / 0
31.03.2014, 13:42
    #38600802
Andrew_nik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Паттерн на PHP
Код: php
1.
2.
3.
4.
5.
6.
$str = "makename = 'BMW' AND yearid = '19\'83' and dfd IN ('df', '211')";
    $pattern = "/'(?:\\'|[^'])*'/i";
    
    preg_match_all($pattern, $str, $matches);
    var_dump($matches);
    exit();



Результат:
...
Рейтинг: 0 / 0
31.03.2014, 13:44
    #38600807
Andrew_nik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Паттерн на PHP
А должно быть что-то вроде этого:
...
Рейтинг: 0 / 0
31.03.2014, 14:07
    #38600852
r u
r u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Паттерн на PHP
Andrew_nik,

а ну ясно. просто в php регулярки жадные. поэтому нужно в вашем случае жадность уменьшить:
Код: php
1.
$pattern = "/'(?:\\\'|[^'])*?'/i";
...
Рейтинг: 0 / 0
31.03.2014, 14:24
    #38600881
Andrew_nik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Паттерн на PHP
Спасибо
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Паттерн на PHP / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]