Помогите с регуляркой

hell0w0rd

Продвинутый новичок
PHP:
/\n*\[([0-9]+)\]: (.+?[- ]) *"|'*(.+?)*"|'*/m
Вот регулярка, скать должна в таких выражениях:
PHP:
[0]: http://example.com/ "Optional Title Here"
[1]: http://example.com/
Что я делаю не так? Если на "псевдокоде", то регулярка делает следующее:
Ищем [число], за которым идет : и пробел за ним же обязательно строка без пробелов
Затем идет возможное выражение - пробел + кавычки + строка

Вот у меня не получается последнее выражение выделить чтобы оно было необязательным
 

hell0w0rd

Продвинутый новичок
PHP:
\n*\[([0-9]+)\]: (.+?) (['|"](.+?)['|"]$)*
Вот так работает почти как нужно, за исключением случая когда после нет строки в кавычках, и в то же время нет пробела после первой строки, достаточно добавить пробел - все работает... магия
 

hell0w0rd

Продвинутый новичок
С.
а я идиот, регулярки сижу сочиняю, спасибище огромное, нафиг нечеткий поиск, что за идиоты его вообще придумали
 

ksnk

прохожий
PHP:
$reg='/^\[(\d+)\]:\s(\S+)(?:\s(["\'])(.+?)\\3)?/um';
$x='[0]: http://example.com/ "Optional Title Here"
[1]: http://example.com/
[2]: http://example.com/ \'Кот "Обормот"\'';

preg_match_all($reg,$x,$m);
var_dump($m);
Регулярки это сила! Сила есть ума не надо. ;)

А есть ли уверенность, что простая разбивка по пробелам действительно поможет во всех вариантах строки? Если есть, то explode рулит, если не в лом выковычивать чиселки и строки из шелухи квадратных скобок и кавычек.
 
Сверху