• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Wyrażenie regularne PHP

0 głosów
526 wizyt
pytanie zadane 5 kwietnia 2018 w PHP przez hiper007 Stary wyjadacz (11,270 p.)
zamknięte 6 kwietnia 2018 przez hiper007

Witam!

Potrzebuje zrobić wyrażenie regularne:

Nazwa pliku: Komorniki_05-04-2018_1957.csv

Wyrażenie powinno być: Zaczyna się od słowa "Komorniki" dalej dowolna ilość znaków i kończyć się na ".csv"

Zrobiłem tak, ale chciałem, żeby po komornikach była dowolna ilość znaków:

$wyrazenie = '/^[A-Z]{1}[a-z]{8}_[0-9]{2}-[0-9]{2}-[0-9]{4}_[0-9]{4}.csv$/';

 

komentarz zamknięcia: Problem rozwiazany
komentarz 5 kwietnia 2018 przez Tomek Sochacki Ekspert (227,510 p.)

Zaczyna się od słowa "Komorniki" dalej dowolna ilość znaków i kończyć się na ".csv"

piszesz o dowolnych znakach, z w regexp próbujesz dopasować konkretne cyfry, to w końcu jak? Ja w mojej wersji założyłem, że masz słowo "Komorniki", po nim dowolne znaki w dowolnej ilości i na końcu ".csv". Jeśli ma być inaczej to sprecyzuj założenia i daj najlepiej parę przykładów.

komentarz 5 kwietnia 2018 przez hiper007 Stary wyjadacz (11,270 p.)
Bo tylko takie cos udalo mi sie stworzyc :) nie wiem w jaki sposob zrobic dowolna ilosc znakow. Chodzi mi o dowolna ilosc...
1
komentarz 5 kwietnia 2018 przez Tomek Sochacki Ekspert (227,510 p.)

To zerknij na to co napisałem w odpowiedzi poniżej :)

dowolny znak możesz dopasować poprzez:

.*

kropka oznacza dowolny znak (nie do końca, ale to za chwilę) a znak gwiazki "*" oznacza kwantyfikator dowolnej liczby powtórzeń.

Mój wzorzec:

/^Komorniki.*\.csv$/

akceptuje więc "Komorniki", po tym dowolne znaki i na końcu '.csv", więc de facto akceptuje też np. samo "Komorniki.csv".

A co do tego znaku kropki to jeśli jest on zapisany jako "." to oznacza dowolny znak, a jeśli "\." to oznacza dosłownie kropkę.

Natomiast przez "dowolny znak" należy w tym konkretnym wypadku rozumieć dowolny znak z podstawowej platformy Unicode BMP za wyjątkiem sekwencji nowego wiersza. W tym przypadku analizujemy nazwy plików więc nowym wierszem bym się nie przejmował. Pytanie co z ewentualnymi znakami niedozwolonymi w nazwach pliku. Ale tutaj pytanie skąd masz te dane, bo jeśli to np. nazwy istniejących plików pobrane z folderu to nie ma opcji żeby miały błędną nazwę bo po prostu system by je odrzucił, więc można spokojnie stosować znak "." (kropkę).

Gdyby coś było niejasne to śmiało pisz :)

1 odpowiedź

+1 głos
odpowiedź 5 kwietnia 2018 przez Tomek Sochacki Ekspert (227,510 p.)
wybrane 6 kwietnia 2018 przez hiper007
 
Najlepsza

Może coś takiego:

/^Komorniki.*\.csv$/

tylko że tutaj zakładam, że Komorniki zaczyna się wielką literą, jeśli ma być dowolność liter to trzeba włączyć flagę ignorowania wielkości znaków.

komentarz 6 kwietnia 2018 przez hiper007 Stary wyjadacz (11,270 p.)
Dzięki :)

Podobne pytania

0 głosów
2 odpowiedzi 310 wizyt
pytanie zadane 21 sierpnia 2018 w Java przez kingkushlee Gaduła (3,960 p.)
0 głosów
2 odpowiedzi 514 wizyt
pytanie zadane 20 czerwca 2018 w Java przez fipooo Bywalec (2,880 p.)
0 głosów
1 odpowiedź 270 wizyt
pytanie zadane 20 kwietnia 2019 w PHP przez hiper007 Stary wyjadacz (11,270 p.)

93,743 zapytań

142,682 odpowiedzi

323,299 komentarzy

63,330 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...