Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Wyrażenia regularne, Wyrażenia regularne
Mikiisz
post 10.05.2016, 19:44:01
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 10.05.2016
Skąd: Krzesło

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


Szukałem ale nie znalazłem odpowiedzi (przyznam się, marnie szukałem).
Jak skonstruować wyrażenie które sprawdzi czy w danym ciagu występują po 2 litery każdej litery z zakresu [a-c].
czyli przy ciągu 'aabbcc' orztymam prawde, ale równoczesnie przy 'aaabcc' już fałsz.
Go to the top of the page
+Quote Post
mariolita
post 10.05.2016, 21:27:24
Post #2





Grupa: Zarejestrowani
Postów: 116
Pomógł: 10
Dołączył: 24.04.2015

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


Hej, zastanawiam się nad twoim problem i stworzylem coś poniżej wklejam, jest dość późno i na pewno jutro by się dało uprościć ten kod ale sprawdź czy chodzi ci o coś takiego?

podstaw sobie pod $ciag_znakow swój ciąg - ewentualnie sie skrypt dopracuje.

  1. <?php
  2.  
  3. $ciag_znakow = "fsddfdsccca";
  4.  
  5. $ciag_znakow_przelicz_znaki = strlen($ciag_znakow);
  6.  
  7. $i = 0;
  8.  
  9. $start = "";
  10.  
  11. while ($i < ($ciag_znakow_przelicz_znaki - 1)) {
  12.  
  13. $nanstepny = $ciag_znakow[$i + 1];
  14.  
  15. if($ciag_znakow[$i] == $nanstepny) {
  16.  
  17. $start = $start.$ciag_znakow[$i];
  18.  
  19. } else {
  20.  
  21. $start = $start.$ciag_znakow[$i].".";
  22.  
  23. }
  24.  
  25. $i++;
  26.  
  27. }
  28.  
  29. $usun_ostatnia_kropke = substr($start,0,-1);
  30.  
  31. $kawalki = explode(".", $usun_ostatnia_kropke);
  32.  
  33. $policz_kawalki = count($kawalki);
  34.  
  35. $whileStart = 0;
  36.  
  37. while ($whileStart < $policz_kawalki) {
  38.  
  39. $sprawdz_ile_znakow = strlen($kawalki[$whileStart]);
  40.  
  41. if($sprawdz_ile_znakow == 2) {
  42.  
  43. echo "Litera: ".substr($kawalki[$whileStart],0,-1)." się powtarza<br>";
  44.  
  45. }
  46.  
  47. $whileStart++;
  48.  
  49. }


Output: "Litera: d się powtarza"

Ten post edytował mariolita 10.05.2016, 21:29:51
Go to the top of the page
+Quote Post
LowiczakPL
post 10.05.2016, 22:00:37
Post #3





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

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


po 2 litery każdej litery z zakresu [a-c].

najprościej

/a{2}b{2}c{2}/


--------------------
Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
Go to the top of the page
+Quote Post
trueblue
post 11.05.2016, 10:13:39
Post #4





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Cytat(LowiczakPL @ 10.05.2016, 23:00:37 ) *
po 2 litery każdej litery z zakresu [a-c].

najprościej

/a{2}b{2}c{2}/

To się sprowadza do porównania stringu z 'aabbcc';

(([a-c])\2){3}
Ale nie wiem czy może być sytuacja aaaabb lub aabbbb, itd.


--------------------
Go to the top of the page
+Quote Post
Pyton_000
post 11.05.2016, 11:14:20
Post #5





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

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


@trueblue Twój regexp ładnie złapie 'aaaaaa' smile.gif
Go to the top of the page
+Quote Post
trueblue
post 11.05.2016, 11:31:33
Post #6





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Pyton_000, zdaję sobie sprawę, podchodzi to pod przypadki, które wymieniłem.
Nie wiem jednak czy autor wyklucza tylko nieparzyste wystąpienia, czy również całe grupy mają między sobą się różnić.

Może nawet oczekuje, że ma być tylko i wyłącznie 'aabbcc' smile.gif

Ten post edytował trueblue 11.05.2016, 11:32:26


--------------------
Go to the top of the page
+Quote Post
Mikiisz
post 11.05.2016, 14:36:13
Post #7





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 10.05.2016
Skąd: Krzesło

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


Chodzi tutaj tylko o sprawdzenie czy występują dokładnie po 2. Nie ważne w jakiej kolejności
Go to the top of the page
+Quote Post
mariolita
post 11.05.2016, 14:54:00
Post #8





Grupa: Zarejestrowani
Postów: 116
Pomógł: 10
Dołączył: 24.04.2015

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


te moje wypociny sie nie nadaja?
Go to the top of the page
+Quote Post
Mikiisz
post 11.05.2016, 16:59:36
Post #9





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 10.05.2016
Skąd: Krzesło

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


Nadają i dziękuję pięknie.
Go to the top of the page
+Quote Post
trueblue
post 11.05.2016, 17:00:05
Post #10





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


(?:aa()|bb()|cc()){3}\1\2\3

(?:(aa|bb|cc)(?!.*\1)){3}


--------------------
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: 19.07.2025 - 16:56