Chcę być zdolne do analizowania ścieżki plików jak ten:Wyrażenie regularne pasujące do nieograniczonej liczby opcji
/var/www/index.(htm|html|php|shtml)
do uporządkowanej tablicy:
array("htm", "html", "php", "shtml")
a następnie produkować listę alternatyw :
/var/www/index.htm
/var/www/index.html
/var/www/index.php
/var/www/index.shtml
teraz mam preg_match
oświadczenie, że może podzielić dwa alternatywy:
preg_match_all ("/\(([^)]*)\|([^)]*)\)/", $path_resource, $matches);
Może ktoś dać mi wskaźnik Jak przedłużyć to zaakceptować nieograniczoną liczbę alternatyw (co najmniej dwóch)? Tylko w odniesieniu do wyrażenia regularnego, reszta, z którą mogę sobie poradzić.
Zasada jest taka:
Lista musi zacząć
(
i ścisłej z)
Musi istnieć jeden
|
na liście (czyli co najmniej dwie alternatywy)Wszelkie inne wystąpienia
(
lub)
mają pozostać nietknięte.
Aktualizacja: muszę być w stanie poradzić sobie również z wieloma parami nawiasów, takich jak:
/var/(www|www2)/index.(htm|html|php|shtml)
przykro mi powiedzieć, że nie od razu.
UPDATE 2: Jeśli szukasz zrobić to, co usiłuję zrobić w systemie plików, a następnie zwrócić uwagę, że glob() przynosi już tę funkcję po wyjęciu z pudełka. Nie ma potrzeby wdrażania niestandardowego solutiomu. Zobacz odpowiedź @ Gordona poniżej, aby uzyskać szczegółowe informacje.
Dlaczego do cholery jest każdy * * Obsesję ** z regex? Po prostu użyj innej cholernej metody. Dopasowanie wszystkiego po nawiasie ** nie jest trudne ** bez wyrażeń regularnych. –
@Coronatus pokazuje mi elegancką, lekką metodę bez regex, która może 1. radzić sobie z wieloma parami nawiasów i 2. ignorować pary nawiasów, które nie zawierają '|' i nie wygląda jak gówno, a ja ' Z radością ściągnę dla ciebie kapelusz. –
Gotowe. Zobacz moją odpowiedź. –