[PHP7] Znak klamry w REGEXP

Odpowiedz Nowy wątek
2020-06-26 10:15

Rejestracja: 1 miesiąc temu

Ostatnio: 1 miesiąc temu

0

Cześć,

mam problem ze znakiem klamry w wyrażeniu regularnym na PHP7.
{osoba:imie.nazwisko}

REGEXP:
/{osoba\:[(a-z)]+}/i

Po usunięciu klamerek, znajduje, a z nimi nie. Wcześniej na PHP 5.6 działało bez problemu.

edytowany 1x, ostatnio: co17rey, 2020-06-26 10:21

Pozostało 580 znaków

2020-06-26 10:44

Rejestracja: 11 miesięcy temu

Ostatnio: 10 godzin temu

1
co17rey napisał(a):

{osoba:imie.nazwisko}

REGEXP: /{osoba\:[(a-z)]+}/i

Ja tu raczej widzę problem, że dopasowujesz osoba:, a potem ciąg znaków z grupy a-z(), więc format imie.nazwisko się w to nie wpasowuje, bo zawiera kropkę, która nie zawiera się w grupie a-z().

Pozostało 580 znaków

2020-06-26 10:50

Rejestracja: 1 miesiąc temu

Ostatnio: 1 miesiąc temu

0

Masz rację z kropką, ale podany tekst tekst to przykład i z szybkości wpisałem kropkę. powinno być imienazwisko - już poprawiam.

Pozostało 580 znaków

2020-06-26 11:27

Rejestracja: 2 lata temu

Ostatnio: 4 godziny temu

2

Klamry służą do podawania liczby powtórzeń poprzedzającego je wyrażenia, np:
a{5} - pięć literek a
więc jeśli chcesz je potraktować jako zwykłe znaki, to musisz je eskejpnąć:
/\{osoba\:[(a-z)]+\}/i


Pozostało 580 znaków

2020-06-26 11:55

Rejestracja: 1 rok temu

Ostatnio: 13 minut temu

1
Freja Draco napisał(a):

Klamry służą do podawania liczby powtórzeń poprzedzającego je wyrażenia, np:
a{5} - pięć literek a
więc jeśli chcesz je potraktować jako zwykłe znaki, to musisz je eskejpnąć:
/\{osoba\:[(a-z)]+\}/i

Zgadza się. Warto zaznaczyć, że klamry odpowiadają za zakres albo są klamrami zależnie od kontekstu. Dlatego jeśli chcemy mieć pewność, że to są klamry a nie zakres, możemy postąpić z Twoją sugestią.

Odnośnie problemu autora:
Polecam strony w stylu https://regexr.com/ . Można tam wkleić swoje wyrażenie i podać przykładowy tekst, który chcemy dopasować. Od razu dostaniemy informację czy wyrażenie jest poprawne. Jeśli jest, w ramce na dole można przeczytać wyjaśnienie tego co wyrażenie robi. Po lewej: ściąga jak dla zielonego. Do tego https://www.php.net/manual/en/pcre.pattern.php


Nie sztuka uciec gdy w dupie sztuciec

Pozostało 580 znaków

2020-06-26 13:36

Rejestracja: 1 miesiąc temu

Ostatnio: 1 miesiąc temu

0

Dzięki za odpowiedzi. Za szybko napisałem post. Problemem było to, że ciąg znaków imienazwisko zawierało cyfrę na końcu. Jak usunąłem klamry to działało i teraz wiadomo dlaczego. Dopisałem zakres 0-9 i działa.

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0