![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 27.09.2012 Ostrzeżenie: (0%) ![]() ![]() |
Cześć.
Panowie. Mała prośba o pomoc. Nie jestem wyjadaczem jeżeli chodzi o wyrażenia, a potrzebowałbym napisać patterna. Wiem, że można to zrobić za pomocą funkcji, ale jestem przekonany, że wzorzec też się jakiś uda ułożyć. Do rzeczy. Mam liczbę całkowitą składającą się z 4 cyfr np. 1234. Po przekształceniu ta cyfra może być 2341 lub 4231 lub 1423 itd. Potrzebuję wyrażenie, które będzie zgodne z tymi cyframi. Innymi słowami, muszą być te same cyfry ale w różnej kolejności. Mogę mieć cyfrę 1123 a po przekształceniu 1231 i wyrażenie musi być zgodne. Wzorzec będzie budowany dynamicznie dla każdej cyfry. np dla cyfry 1234 wzorzec będzie [1234]{4} lub ([1{1,4},2{1,4},3{1,4},4{1,4}]){4} - to oczywiście błędny wzorzec. Będę zobowiązany za pomoc w temacie. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 4 298 Pomógł: 447 Dołączył: 16.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Cytat '/^[1-4]/'
-------------------- Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta). |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 590 Pomógł: 107 Dołączył: 25.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
!*!, prawie dobrze - Twoje zmatchuje JEDNĄ cyfrę.
Kod '/^[1-4]{4}/' |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 387 Pomógł: 66 Dołączył: 31.03.2005 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
Wyrażenia są prawidłowe o ile te cyfry będą kolejne !
Czy te cyfry to od 1 do 4 czy jednak może być 2759 i też ważne pytanie, czy wcześniej znasz te cyfry ? -------------------- ..::: Jak pomogłem to kliknij pomógł. Tak rzadko używacie tej opcji :( :::..
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 27.09.2012 Ostrzeżenie: (0%) ![]() ![]() |
Liczby będą w zakresie od 1000 do 9999, nie będą znane. Są generowane automatycznie. Dla każdej wygenerowanej losowo liczby będę potrzebował regexa, który będzie pasował do tych cyfr, ale 'wymieszanych'. Np cyfry 2759 mogą być cyfry 9752 albo 7295 albo 5729 itd. Regex będę generował automatycznie dla każdej wygenerowanej cyfry. |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 27.09.2012 Ostrzeżenie: (0%) ![]() ![]() |
Crozin dzięki za odpowiedz, ale chcę uniknąć używania algorytmów.
Może jeszcze jakiś pomysł na regexa ? |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 4 298 Pomógł: 447 Dołączył: 16.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Padło już.
Cytat '/(^[0-9]{4})$/' Skoro ma być to zakres od 0 do 9, w ilości sztuk 4. Ten post edytował !*! 28.09.2012, 11:19:26 -------------------- Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta). |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
W zasadzie to od 1000.
Cytat ([1-9][0-9]{3}){4} Czy jakoś tak, nie sprawdzam. -------------------- |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Cytat Crozin dzięki za odpowiedz, ale chcę uniknąć używania algorytmów. No to zadanie jest niemożliwe do wykonania, a już na pewno nie przy użyciu wyrażeń regularnych, które wykorzystują niezwykle skomplikowane algorytmy (porównując do tego co podałem). Na dobrą sprawę wszystko co chcesz zrobić, to sprawdzić czy oba ciągi są anagramami samych siebie. Osiągnięcie tego przy użyciu wyrażeń będzie trudne, a na pewno niezwykle nieczytelne.@!*!: Nie chodzi o sprawdzenie czy ciąg jest liczbą składającą się z cyfr 0-9, tylko czy wykorzystuje wszystkie cyfry z oryginalnej liczby. |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 4 298 Pomógł: 447 Dołączył: 16.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
@!*!: Nie chodzi o sprawdzenie czy ciąg jest liczbą składającą się z cyfr 0-9, tylko czy wykorzystuje wszystkie cyfry z oryginalnej liczby. Fakt. A nie możesz po prostu zamiast 0-9 dać tych cyfr w wyrażeniu?
-------------------- Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta). |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 27.09.2012 Ostrzeżenie: (0%) ![]() ![]() |
Panowie, dobrze kombinujecie, ale to jeszcze nie to.
Przykład: cyfra: 1234 i regex: [1234]{4} jakie wartości będą prawidłowe ? 1234, 2341 itd - ale też 1111, 2222, 3333, 4444 o co mi chodzi ? o to żeby wymusić wszystkie cyfry a [1234] nie wymusza, możemy wymusić wszystkie elementy [1{1}2{1}3{1}4{1}]{4} - takim wzorcem, ale on wymusza również kolejność elementów - a ja potrzebuję różną kolejność. i jeszcze raz napiszę - dla każdej cyfry będę generował wzorzec. potrzebuję tylko sprawdzić czy cyfra, która mi wchodzi do metody, spełnia warunek. wiem, że to nie łatwy problem, dlatego postanowiłem założyć wątek, poprostu nie znalazłem odpowiedzi, albo nie wiem jak szukać, więc proszę o podpowiedzi |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Ale wiesz, że dostałeś już właściwie odpowiedź podaną na tacy, a Ty dalej brniesz w te wyrażenia, które się tutaj kompletnie nie nadają (ciąg od użytkownika nie ma regularnej struktury).
Ten post edytował Crozin 28.09.2012, 12:23:28 |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 158 Pomógł: 43 Dołączył: 9.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
@Crozin ma rację. Dodatkowo aby zbudować wzorzec dla wyrażenia regularnego i tak musiałbyś zastosować algorytm, który uwzględnia anagramy danego ciągu, zupełnie bez sensu stosować wtedy wyrażenie regularne.
Do jego algorytmu w poście #6 tylko można dorzucić na samym początku sprawdzanie czy łańcuchy mają równą długość, jeśli nie, to nie ma sensu dalej przekształcać Ewentualnie trochę inny algorytm z usuwaniem znaków:
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 27.09.2012 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki panowie za odpowiedzi.
Algorytm mam już działający. Szukałem innego rozwiązania. Pozdrawiam i dzięki za poświęcenie czasu na odpowiedz. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 08:51 |