Regulární výraz pro preg_match_all

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
fish
Člen | 4
+
0
-

Zdravím,

dělám si na Nette (nebo spíš snažím se dělat) takové menší CMSko a narazil jsem na problém, který nejsem nějak schopen vyřešit, i když už nad tím pěknou chvíli sedím (co by taky člověk mohl dělat jiného ve čtvrt na 3 ráno, že :) ) Ale k věci. Potřeboval bych nějak v textu nalézt všechny výskyty řetězců ve formátu {cmsSnippet 'jmenosnippetu'} . Sestavil jsem si regulár #\{cmsSnippet \'(?P<name>\w+)\'\}#, a zdálo se, že to funguje, ale preg_match_all mi našlo vždy jen případný první výskyt řetězce v textu, další už ne.

S regulárními výrazy moc zkušeností nemám, tak mě napadlo, že někdo povolanější tu chybu možná najde snáz.

Děkuju vám za pomoc.

wdolek
Člen | 331
+
0
-

nema to souvislost s „greedy“ / „ungreedy“ vyrazem? http://docstore.mik.ua/…/ch13_05.htm (jen tak hadam, v 5 rano)

Mikulas Dite
Člen | 756
+
0
-

Šel bych do

$res = Nette\String::matchAll($text, '~\{cmsSnippet\ \'(?P<name>[^\']+)\'}~xms');

zkusil sem, funguje.

fish
Člen | 4
+
0
-

Díky, funguje to parádně.