Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [inne]Wyrażenia regularne - złożony wzór
115750
post 23.10.2017, 11:31:02
Post #1





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 7.06.2004
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Próbuję ułożyć wzór na wyrażenie regularne, które będzie zwracało prawdę, gdy w dowolnym miejscu tekstu będzie jedno ze słów pies|kot ale nie będzie zawierać słowa ryba.

Np. Ala ma kota, psa i chomika ==> prawda
Ala ma kota, a w akwarium pływa ryba ==> fałsz.

Próbowałem na różne sposoby np.
Cytat
.*(psa|kota|)!(ryba).*

ale nie mogę ułożyć sad.gif

Ten post edytował 115750 23.10.2017, 11:32:14
Go to the top of the page
+Quote Post
nospor
post 23.10.2017, 11:37:46
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




A nie mozesz najpierw sprawdzic czy jest pies|kot a potem sprawdzic czy jest ryba?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
115750
post 23.10.2017, 11:44:55
Post #3





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 7.06.2004
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Niestety wszystko muszę zrobić w jednym wyrażeniu.
Go to the top of the page
+Quote Post
nospor
post 23.10.2017, 11:45:37
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Taki wymog w szkole czy ty tak sobie zalozyles?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
115750
post 23.10.2017, 12:09:20
Post #5





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 7.06.2004
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Taki wymóg ale nie w szkole lecz w programie. Pozwala on wpisać tylko 1 wyrażanie.
Go to the top of the page
+Quote Post
Pyton_000
post 23.10.2017, 12:21:55
Post #6





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


/(kota|psa)(?!.*ryba)/
Go to the top of the page
+Quote Post
115750
post 23.10.2017, 12:59:58
Post #7





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 7.06.2004
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Dziękuję, jest prawie dobrze ale niestety przepuszcza wyrażenia typu: "ryba jest ale nie ma psa i kota."
Go to the top of the page
+Quote Post
trzczy
post 23.10.2017, 17:00:50
Post #8





Grupa: Zarejestrowani
Postów: 460
Pomógł: 49
Dołączył: 5.06.2011

Ostrzeżenie: (0%)
-----


  1. (kota|psa)(?=.*ryba)|ryba(?=.*kota|psa)|^(?!.*kota|psa)

Z tym że to pokaże fałsz, a nie prawdę, kiedy będzie pies lub kot bez ryby. Czyli trzeba wynik zaprzeczyć w php.

Ten post edytował trzczy 23.10.2017, 17:21:10
Go to the top of the page
+Quote Post
viking
post 23.10.2017, 17:07:35
Post #9





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


  1. /^(?!.*ryba\b).*(kota|psa).*/gm


--------------------
Go to the top of the page
+Quote Post
115750
post 24.10.2017, 10:15:13
Post #10





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 7.06.2004
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Dziękuję wszystkim za pomoc.
Metodą prób i błędów doszedłem do optymalnego wzoru:

Kod
^(?!.*ryb)(?=.*(?:kot|psa))(?!.*ryb)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 07:36