Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Warunkowe wyrażenie regularne
Forum PHP.pl > Forum > PHP
8rol
Witam.

Potrzebuje skonstruować wyrażenie regularne, które będzie wykorzystane do znalezienia odpowiedniego wyniku przez zapytanie MySQL.

Powiedzmy, że mam taki ciąg wejściowy: AAABBBCCCDDD (docelowy ciąg może składać się z dowolnych liter i cyfr).
Natomiast w bazie chce znaleźć ciąg który będzie odpowiadał temu powyższemu oraz będzie zawierał znak "#" pomiędzy którymś z elementów ciągu (na jednej lub więcej pozycjach)

Teoretycznie moje zapytanie mogłoby wyglądać tak: A[#]?A[#]?A[#]?B itd. to jednak stwarza ten problem, że wyrażenie to zostanie dopasowane również do ciągu, w którym ani razu nie wystąpi znak "#".

Jak więc stworzyć wyrażenie, które dla całej długości ciągu będzie wymagało wystąpienia danego znaku chociaż raz?
rossol
Źródło http://pl.wikibooks.org/wiki/PHP/Podstawy_...%84_regularnych

Cytat
Kwantyfikator umieszczamy po znaku lub klasie dozwolonych znaków, zatem nasze wyrażenie będzie miało postać /^[0-9]{1}$/. W wyrażeniach regularnych można stosować kilka predefiniowanych kwantyfikatorów:

* - 0 lub więcej
+ - 1 lub więcej
? - 0 lub 1 (uwaga: znak ten jest także wykorzystywany w innym kontekście)
tehaha
nie wiem czy da się to zrobić z wyrażeniem regularnym, ale możesz zastosować to wyrażenie, które podałeś i dołożyć do tego drugi warunek używając funkcji mysql FIND_IN_SET(), http://dev.mysql.com/doc/refman/5.0/en/str...ion_find-in-set, w ten sposób sprawdzisz czy w dany ciągu znajduje się znak #
by_ikar
Warunki w wyrażeniach regularnych akurat zapisuje się inaczej. Tutaj raczej kombinowałbym coś z przewidywaniem pozytywnym. Lektura: http://gajdaw.pl/php/wyrazenia-regularne-p...torial/p23.html
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.