Jak w #grep znaleźć tekst pomiędzy znakami '<' i '>', np: < tutaj długi tekst > ?

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
@scorpio18k: Jak po „+” albo „*” dasz znak zapytania to te operatory stają się „leniwe”, tj. próbują zmatchowac minimalną liczbę znaków. W innym wypadku są zachłanne - #!$%@?ą w opór.

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)
Jak najłatwiej pobrać nazwę paczkomatu ze stringu:

Paczkomat nr: DGO18M, Adres: Krasińskiego 3, 41-300 Dąbrowa Górnicza
Paczkomat nr: DGO18M Adres: Krasińskiego 3, 41-300 Dąbrowa Górnicza

Czasem po nazwię paczkomatu jest przecinek, a czasem nie ma... jakiś regex?

#php #regex
@Serghio: to w zupełnie innym celu. Po prostu pobieram sobie sprzedaże z allegro, erli, areny do własnego systemu, przez który sobie automatycznie tworze etykiety do wydruku przez api inpostu, a tam trzeba podać nazwę paczkomatu. Allegro czy erli zwracają wybrany paczkomat w poprawnym formacie, niestety arena wyświetla całość jako komentarz do zamówienia, dlatego musiałem to jakoś obejść.
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
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
@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
via Wykop Mobilny (Android)
  • 2
@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
via Wykop Mobilny (Android)
  • 0
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 - Ehh, dalej walczę z regex ( ͡° ʖ̯ ͡°) Pytanko, czy możliwym jest wy...

źródło: comment_1622560089zdlNw1GEq0T3zYeHRceavJ.jpg

Pobierz
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
@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
@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.
#regexp #regex #programowanie

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ć
@zwei: nie pamiętam dokładnej nazwy, ale to ma chyba związek z wyszukiwaniem wstecznym. Normalnie regex jest maszyną stanów, która przetwarza tekst tylko wprzód. Tutaj masz backmatching. Rzucam tylko wskazówkę, powinieneś znaleźć odpowiednią flagę
@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