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
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@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 - matchują w opór.

Regex101 z reszta ładnie to tłumaczy:

1st Capturing Group
  • Odpowiedz
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?
  • 10
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@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ść.
  • Odpowiedz
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: [
'',
  • 8
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

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")
  • 7
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@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
  • Odpowiedz
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
  • Odpowiedz
Naklepałem sobie regexa który matchuje 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}
  • 9
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

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
  • 8
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@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
  • Odpowiedz
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).
  • Odpowiedz
@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.
  • Odpowiedz
#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
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@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ę
  • Odpowiedz
@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".
  • Odpowiedz