Wszystko
Wszystkie
Archiwum
46
RegEx - Strona do nauki, testowania, budowania wyrażeń regularnych.
Wyrażenia regularne są językiem, dzięki któremu za pomocą odpowiednich operatorów możemy dopasować dowolny ciąg znaków spełniający nasze założenia.
z- 5
- #
- #
- #
- #
- #
- #
Cześć, czy ktos potrafi mi pomóc i odpowiedzieć na pytanie czemu ten regex w angularze (typescript) nie działa poprawnie dla kodu pocztowego?
Otóz mam taka sytuacje :
w Form builderze tworze pole :
postalCode: [
'',
Validators.pattern('\d{2}-\d{3}')
],
Jak dobrze rozumiem - przez wyrazenie regularne wskazuje ze mam otrzymac 2 - cyfry po których ma pojawić sie myślnik i znowu oczekuje na otrzymanie 3 cyfr od użytkownika. Wszystko wygląda ładnie do momentu
Otóz mam taka sytuacje :
w Form builderze tworze pole :
postalCode: [
'',
Validators.pattern('\d{2}-\d{3}')
],
Jak dobrze rozumiem - przez wyrazenie regularne wskazuje ze mam otrzymac 2 - cyfry po których ma pojawić sie myślnik i znowu oczekuje na otrzymanie 3 cyfr od użytkownika. Wszystko wygląda ładnie do momentu
konto usunięte via Wykop Mobilny (Android)
- 1
@FortresMaximus ja bym kombinował tak:
- być może backslash trzeba dodatkowo wyescapować bo znajduje się w stringu
- Validators.pattern przyjmuje też regexp, także przekazanie pełnego regexpa może rozwiązać problem
- być może backslash trzeba dodatkowo wyescapować bo znajduje się w stringu
- Validators.pattern przyjmuje też regexp, także przekazanie pełnego regexpa może rozwiązać problem
- 0
@aloucie dziękuję, wczoraj udało mi się to rozwiązać na sam wieczór
Hej,
W jaki sposób mogę przeparsować argumenty w określonym wywołaniu funkcji?
Przykładowo mam takie wywołanie(zawsze wiem z iloma argumentami będzie wywoływane)
obj.call("a1", "a2", "a3")
w których argumentami są
a1
a2
a3
i to robię wyszukując tekst pomiędzy przecinkami.
Niby dobrze to działa, ale wysypuje się przy np.
obj.call(call2("a1,"a2"),"a3")
ponieważ jako argumenty wyszukuje
call2("a1
"a2)
a3
zamiast tylko dwóch
#programowanie #regex
W jaki sposób mogę przeparsować argumenty w określonym wywołaniu funkcji?
Przykładowo mam takie wywołanie(zawsze wiem z iloma argumentami będzie wywoływane)
obj.call("a1", "a2", "a3")
w których argumentami są
a1
a2
a3
i to robię wyszukując tekst pomiędzy przecinkami.
Niby dobrze to działa, ale wysypuje się przy np.
obj.call(call2("a1,"a2"),"a3")
ponieważ jako argumenty wyszukuje
call2("a1
"a2)
a3
zamiast tylko dwóch
#programowanie #regex
- 1
@qarmin: Takich rzeczy raczej nie robi się regexami, większość języków z którymi miałem styczność miała jakieś narzędzia do manipulacji kodu, na przykład przy JSie możesz używać Babel albo API kompilatora TypeScriptu, kod przerabiany jest na AST (Abstract Syntax Tree) i tam możesz łatwo robić co chcesz
@qarmin: napisz własną gramatykę przy użyciu np tego
https://github.com/yhirose/cpp-peglib . Jak header only nie pasuje to możesz napisać coś takiego samemu. Iterujesz się po każdym znaku. Dla każdego typu nawiasów trzymasz licznik, który odpowiednio zwiekszasz/zmniejszasz gdy napotkasz nawias otwierający/zamykający. Jak napotkasz przycinek to sprawdzasz licznik nawiasów: jak wszystkie są na 0 (nie liczymy tego głównego) to masz granicę pomiędzy argumentami
https://github.com/yhirose/cpp-peglib . Jak header only nie pasuje to możesz napisać coś takiego samemu. Iterujesz się po każdym znaku. Dla każdego typu nawiasów trzymasz licznik, który odpowiednio zwiekszasz/zmniejszasz gdy napotkasz nawias otwierający/zamykający. Jak napotkasz przycinek to sprawdzasz licznik nawiasów: jak wszystkie są na 0 (nie liczymy tego głównego) to masz granicę pomiędzy argumentami
- 3
@mamniciwszystko: za 50 zł ci napiszę w sumie xd
- 1
Naklepałem sobie regexa który #!$%@? mi stringa z dwoma datami przedzielonymi znakiem /
Dla przykładu: 07-03-2020/08-03-2020
Czy można ogarnąć tego regexa tak żeby nie powtarzać go dwa razy, przed znakiem / i po znaku / ?
(?:0[1-9]|2[0-9]|3[0-1])-(?:0[1-9]|1[1-2])-\d{4}/(?:0[1-9]|2[0-9]|3[0-1])-(?:0[1-9]|1[1-2])-\d{4}
#programowanie #regexp #regex
Dla przykładu: 07-03-2020/08-03-2020
Czy można ogarnąć tego regexa tak żeby nie powtarzać go dwa razy, przed znakiem / i po znaku / ?
(?:0[1-9]|2[0-9]|3[0-1])-(?:0[1-9]|1[1-2])-\d{4}/(?:0[1-9]|2[0-9]|3[0-1])-(?:0[1-9]|1[1-2])-\d{4}
#programowanie #regexp #regex
- 1
Ale zajebistego regexa napisałem, i działa!
(.{3,5}\/XYZ\/(?:0[1-9]|1[012])\/\d{4})
#chwalesie #regex #programowanie
(.{3,5}\/XYZ\/(?:0[1-9]|1[012])\/\d{4})
#chwalesie #regex #programowanie
- 2
Ehh, dalej walczę z regex ( ͡° ʖ̯ ͡°) Pytanko, czy możliwym jest wyciągnięcie tekstu w dwóch #regex? Chce wyciągnąć to co jest pogrubione, i w drugim regex to co przechylone. Rzecz w tym że to jest w pewnej aplikacji, muszę wyciągnąć te dwie rzeczy z pewnego pola, mając do dyspozycji właśnie regex. ( ͡° ʖ̯ ͡°) A jest to dla mnie jakieś
@MamByleJakiNick: poczytaj o grupach w regex
@MamByleJakiNick:
^([a-z]{3})[ ]?-[ ]?([a-z]{3})-...
Kombinuje, kombinuje i nic nie mgoe wymyślić ( ͡° ʖ̯ ͡°) Potrzebuje #regex który zostawi mi wszystko za ostatnim myślnikiem z spacjami. Przykładowo: mam tekst abc - sis - hij to żeby zostawiło tylko hij. W przypadku gdy mam abc - sis-hij ma zostawić sis-hij czyli to, co po ostatnim myślniku z spacjami zostaje
#linux #programowanie #programista15k #pracait
#linux #programowanie #programista15k #pracait
@MamByleJakiNick: Splitnij tekst, jako rozdzielnik weź " - ", a z tablicy wyników weź wynik od length tablicy.
@Yumenoshi: najprostsze rozwiązania najlepsze
- 0
jak #regex em usuwać z każdej linii np. drugi i czwarty wyraz
jeśli to coś ułatwi zawsze usuwamy ostatni
możemy założyć, że znaki jakie tam będą to cyfry, znak mniejszości i kropka
np. z takiego
Lesotho <10,000 2,170,000 <1.0
zostawić tylko Lesotho 2,170,000
robię to na własny cel, w notatniku++, więc bez obaw o zapis ;)
#programowanie
jeśli to coś ułatwi zawsze usuwamy ostatni
możemy założyć, że znaki jakie tam będą to cyfry, znak mniejszości i kropka
np. z takiego
Lesotho <10,000 2,170,000 <1.0
zostawić tylko Lesotho 2,170,000
robię to na własny cel, w notatniku++, więc bez obaw o zapis ;)
#programowanie
@deadIift: skopiuj i wklej do gsheets :)
wciśnij i trzymaj lewy ctrl, potem kursorem zaznacz sobie od rogu tabeli (jednej komórki) i przeciągnij myszkę po przekątnej do konca tabeli, legancko sobie zaznaczysz wszystko, potem ctrl+c i w gsheets ctrl-v.
Tam już jest łatwiej usunąć kolumny niż bawić się z notatnikiem
wciśnij i trzymaj lewy ctrl, potem kursorem zaznacz sobie od rogu tabeli (jednej komórki) i przeciągnij myszkę po przekątnej do konca tabeli, legancko sobie zaznaczysz wszystko, potem ctrl+c i w gsheets ctrl-v.
Tam już jest łatwiej usunąć kolumny niż bawić się z notatnikiem
- 0
@deadIift:
Ale łatwiej jest zwyczajnie zrobić splita jak człowiek. Oddajesz konto na Codecademy a nie potrafisz napisać skryptu na wybranie pierwszego i trzeciego wyrazu? ( ͡° ͜ʖ ͡°)
Ale łatwiej jest zwyczajnie zrobić splita jak człowiek. Oddajesz konto na Codecademy a nie potrafisz napisać skryptu na wybranie pierwszego i trzeciego wyrazu? ( ͡° ͜ʖ ͡°)
- 4
Jak ktoś nie umie regexów to pewnie mu się przyda:
https://github.com/pemistahl/grex
#regex #programowanie
https://github.com/pemistahl/grex
#regex #programowanie
Mirasy, co polecacie do nauki #regex ? Coraz częściej potrzebuję, a męczące jest ciągłe kombinowanie, szukanie i cudowanie ( ͡° ʖ̯ ͡°) Szukam dobrego źródła, zarówno pod kątem #php jak i #javascript
#programowanie
#programowanie
- 33
- 20
Ja się uczyłem w momencie, gdy potrzebowałem jakiegoś konkretnego regex metodą prób i błędów za pomocą https://regex101.com/
Tam na żywo masz informację, co będzie wynikiem, a obok masz jakiś taki "słowniczek" selektorów/tokenów (czy jak to się tam nazywa).
Tam na żywo masz informację, co będzie wynikiem, a obok masz jakiś taki "słowniczek" selektorów/tokenów (czy jak to się tam nazywa).
- 0
Pytanie z kategorii regex: W jaki sposob mozna skomponowac wyrazenie, ktore #!$%@? np. wszystkie adresy url, poza jakimis wyjatkami, np. z domeny amazona?
#programowanie #naukaprogramowania #wyrazeniaregularne #regex #regexp
#programowanie #naukaprogramowania #wyrazeniaregularne #regex #regexp
- 2
@UberRam: https://stackoverflow.com/a/1240293/4638604 , tyle, że jak zachodzi konieczność na look-ahead/look-behind, to lepiej rozwiązać problem w inny sposób np. dwa regexy: jeden sprawdza czy przepuścić a drugi, czy odrzucić
@UberRam: Lepiej użyć gotowego parsera url-i.
Poleci ktoś jakiś poradnik do #regex
Najlepsza była by nie za duża ksiąka w formie przykładów użycia, bez zbędnej teorii póki co.
#programowanie
Najlepsza była by nie za duża ksiąka w formie przykładów użycia, bez zbędnej teorii póki co.
#programowanie
@Zeronader: Wyrażenia regularne. Wprowadzenie - krótka książka + dzień ćwiczeń
Dałoby radę spiąć te wszystkie warunki w jednym wyrażeniu, czy muszę zrobić pare wyrażeń do dopasowania?
#regex #programowanie
#regex #programowanie
- 1
@zoomer21_: więc skoro to jest mały projekt na zaliczenie, to tym bardziej - zamiast krótkiej pętelki i dwóch
if
ów używasz całej rozbudowanej niedeterministycznej maszyny stanowej (bo skoro masz look back, to nie są to wyrażenia regularne) i jeszcze musisz się pytać na forum jak to rozwiązać. To ma być prostsze rozwiązanie? Serio? To pokazuje w jak złym stanie jest nauczanie programowania teraz.- 0
#regexp #regex #programowanie
Czy jest tu jakiś spec od regexów?
Dla stringa
Czy jest tu jakiś spec od regexów?
(?:(?!\1))(\d)\1\b
Dla stringa
888
mam full match 88
, ale z tego, co rozumiem, to (?:(?!\1))
powinien eliminować ósemkę na początku i nie dać matcha. Zresztą jak zamieniam \1
na 8
, to tak rzeczywiście jest. To ja już nie wiem, jak zrobić, żeby tej pierwszej grupy (w tym przypadku pojedynczej ósemki) nie brał. Rzecz w tym, że to nie muszą być- 1
@zwei: To
(?!...)
(negative lookahead) działa w odniesieniu do aktualnej pozycji (w twoim przypadku początek), więc to nic nie robi - znaczy match będzie się opierał tylko na powtórzonych ostatnich cyfrach, bo na początku sprawdzasz czy po tym co już dopasowałeś (jeszcze nic) jest coś innego niż to co będzie następne. Dlatego też non-capture nie potrzebny, bo to nie jest nawet dopasowywany ciąg tylko założenie dotyczące tego z czym "sąsiaduje".(?!(\d)\1)\d\d\b
Ktoś pomoże z regexem? Chodzi o to, że nie łapie tego ostatniego key:value pair, bo nie ma white-space żadnego, a nie wiem jak to zrobić, regexy są dla mnie jak czarna magia ( ͡° ʖ̯ ͡°)
Link: https://regex101.com/r/bKnD9I/1
#programowanie #regex
Link: https://regex101.com/r/bKnD9I/1
#programowanie #regex
@spaduwa_mam_robote: Cieszę się, że mogłem pomóc.
- 1
4
Wyrażenia regularne kontra parsery
Wyrażenia regularne słyną z tego,że są trudne i mało czytelne.Czy są dla nich jakieś alternatywy?Tak, są to parsery.
z- Dodaj Komentarz
- #
- #
- #
- #
- #
- #
Próbowałem (<)(.+)(>) ale kłopot pojawia się gdy mam np:
< tutaj długi tekst > długi tekst 2 >
i wtedy zaznacza ten szerszy zakres a mnie interesuje węższy.
#regex #indesign
<(.+?)>
https://regex101.com/r/gPvkuJ/1
Regex101 z reszta ładnie to tłumaczy:
1st Capturing Group (.+?)
. matches any character (except for line terminators)
+? matches the previous token between one and unlimited times, as few times as possible, expanding as needed (lazy)