Mircy, czy możliwe jest stworzenie wyrażenia regularnego które będzie szukało określonego wyrazu?

Druga część pytania - czy jeśli już mam regex który szuka dwóch wyrazów, to czy możliwe jest stworzenie takiego wyrażenia, które je pogrupuje tak, że w jednej grupie będzie dany string i liczba która się pojawia po nim (nie bezpośrednio) i w drugiej grupie to samo tylko z drugim stringiem i drugą liczbą?

Z której strony ugryźć ten temat? Gdzie
  • 9
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@tamian: Jeśli tak to:

import re
>>> a = "adam mial 23 lata, natomiast ewa miala dopiero 17 lat, kiedy się poznali"
>>> b = '(adam|ewa)[\D]+([\d]+)'
>>> print(re.findall(b, a))
[('adam', '23'), ('ewa', '17')]
  • Odpowiedz
@tamian: Twoje szczęście, że jak na bordo przystało w piątek w nocy mogę siedzieć na wykopie i pomagać w programowaniu ;)

A tak poważniej. Jako wprowadzenie bardzo spoko jest ten tutorial:
https://regexone.com
Bo automatycznie możesz sobie ćwiczyć przy nim.
Jak chcesz sobie ćwiczyć samodzielnie to polecam
  • Odpowiedz
Potrzebuje pomocy przy wyrażeniach regularnych w C. Używam tego #slre

Jak napisać wyrażenie dla liczby:
699
i dla ciągu wyrazów oddzielonych myślnikiem:
wyraz pierwszy-wyraz drugi-wyraz
  • 1
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Mireczki, potrzebuję takiego regexa, który wyciągnie mi dowolny ciąg znaków do końca lub pierwszej napotkanej kropki z wyłączeniem jednej frazy - "abcdef",

"index.html" -> "index"
"abc
def" -> brak dopasowań
"index2" -> "index2"

#programowanie #wyrazeniaregularne #regex
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Mirki, pytanko mam szybciutkie do was, chciał bym nauczyć się wyrażeń regularnych w #php. Wymyśliłem sobie zadanie, mam jakiś string, wewnątrz niego jakieś teksty i kilka linków:
test
oraz kilka innych, np:
test2

teraz chciał bym wyciągnąć to co jest między znacznikami ten tekst, pamiętajmy że link może mieć klasę, title itd. ale nie
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Govr: najprościej chyba

(.*?)
i wtedy pierwszą tablice będziesz miał całość tego wyrażenia, a w każdej kolejnej nawiasy, w tym przypadku "tutaj" dla każdej złapanej linii.
Przy okazji polecam sobie testować regexy np tu. http://www.phpliveregex.com/

EDIT: w sumie to nie do końca odpowiedziałem na Twoje pytanie, w każdym razie oprócz całości wyrażenia to nawiasami () wyciągasz te dane, które chcesz zachować. Nie słyszałem o pomijaniu całości
  • Odpowiedz
Mam łańcuch znaków w postaci XAX, gdzie X to pewien znak powtórzony określoną ilość razy, a A to łańcuch dowolnych znaków za wyjątkiem liczb i konkretnego podłańcucha znaków. Jak wyglądałoby wyrażenie regularne dla takiego łańcucha? Chodzi mi konkretnie o wykluczenie tego konkretnego podłańcucha z łańcucha A.

Przykład:

--------
Przykładowy tekst gdzie
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Mam taki ciąg:

1 2 23 54 24 (liczby rozdzielone spacjami, bez określonej długości liczby).

Próbuję stworzyć regex, który wyłapałby mi każdą z liczb z osobna i wrzucił do grupy. Chciałem łapać najpierw pierwszą liczbę, po czym łapać pary (spacja)(liczba).
  • 9
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@asunez: Regex ma dokładnie tyle grup, ile ma par nawiasów (nie licząc grupy zerowej). Nie można wsadzić nawiasu w gwiazdkę i mieć zmiennej ilości grup, a przynajmniej nie w standardowych implementacjach.
  • Odpowiedz
/().*(?=<\/h2>)/igm
Mam takie wyrażenie. Jak można wyłączyć z zaznaczania ``, tak aby tylko zostały same tytuły, które są wewnątrz tagów?

#wyrazeniaregularne #regexp #programowanie
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  • 8
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Witam regexpowe swiry,
Jako ze jestem leszczem w temacie, potrzebuje wyrazenie ktory dany string:

Wartosc1;Wartosc2;Wartosc3;ZnakSpecjalny=';';Wartosc4;Wartosc5;

zesplituje po ; na
  • 14
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Sir_Nick:
nie bardzo, po pierwsze [0-9] a nie (0-9) jak range, i czemu escapy przed '-'? a abstrahując od tego że to będzie łapało więcej niż potrzeba to prościej \d{4}-\d{2}-\d{2}
  • Odpowiedz
Próbuję napisać takie wyrażenie, które wyłapie mi identyfikator wpisu tylko pod warunkiem, że podany link nie jest komentarzem na mikroblogu.
Próbowałem w ten sposób, że jeśli po id wpisu wystąpi #comment to #regexp nie powinien niczego znaleźć. Jednak nie działa.

wpis\/(\d+)\/?(?!#comment)
www.wykop.pl/wpis/17072663/#comment-59461313
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@niemaKlapka: To nie wypali gdy po slashu wystąpi opis z kilkoma pierwszymi wyrazami z początku wpisu, np:
www.wykop.pl/wpis/17080699/probuje-napisac-takie-wyrazenie-ktore-wylapie-mi-i

Moje rozwiązanie @a231:
/wpis\/(\d+)(\/(?!#comment)|$)/g
  • Odpowiedz
Hej mirki, mam taką sprawę, problem w tym że pilną.. Mam katalog, który zawiera w sobie ogromną ilość podkatalogów, w których jest bardzo dużo małych plików.
Musze znaleźć te, które mają maksymalnie 4 znaki w nazwie pliku.
Rzecz się dzieje na windows 7, więc wymyśliłem, że najwygodniej będzie przez total commander przy użyciu wyrażeń regularnych, ale - jak to zapisać żebym w wyniku otrzymał to czego potrzebuje?

#algorytmy
#wyrazeniaregularne
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Wyrewolwerowanyrewolwer: sam kiedyś miałem podobny problem, generalnie chodzi o to że czasem jak wpiszesz z łapy 4 backslashe (np jako argument), to najpierw kompilator escapuje 2 razy po 2 backlashe, a potem parser regexpa te już wyescapowane 2 backslashe escapuje do jednego ostatecznego. Wiem że nie umiem tłumaczyć i nie wiem czy dobrze mówię, ale to tak w skrócie ( ͡° ͜ʖ ͡°)
  • Odpowiedz
@Wyrewolwerowanyrewolwer: Rzecz jest w zasadzie prosta i znana we wszystkich jezykach. Masz tutaj dwa poziomy escapowania. Najpierw jest escapowanie stringow normalnie w jezyku programowania. Stad dziala np. "\n" jako nowa linia, a "\" zostawia w efekcie pojedynczy "\".

Drugi poziom to regex, w ktorym niestety tez "\" sluzy do escapowania. W efekcie jest tak jak napisal @hamster151:

"\" -> javac -> "\" -> regex -> "\"


W wielu
  • Odpowiedz
Z racji modernizacji skryptu chciałem taką jedną rzecz poprawić, stworzyłem takie:

(gmina_[0-9]+)".+?href="(.+?)".+;">(.+?)<
wyrażenie reguralne. Jednak wynik jego w za pomocą re.findall zwraca pustą listę

Zaś tutaj na takich danych: zwraca wszystko co powinien: https://regex101.com/r/jT3qN3/2#python
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Czy wyrażenia regularne działają jakoś inaczej w pythonie niż gdziekolwiek indziej?
Mam taki kod:

q = re.compile('math|is|fun')
if q.match("smathfuni"):

Szukam wyrazów, które zawierają w sobie którąś z sekwencji znaków 'math', 'is', 'fun'. Ten regex zdaje się działać testowany w przeznaczonych do tego serwisach. Jednak w powyższym kodzie if zwraca false. O co chodzi?
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

#wyrazeniaregularne #regexp #programowanie

Potrzebuję kilkunastu dobrze sprawdzonych wyrażeń regularnych (np. do walidacji formularzy tzn. np. z datą, godziną, emailem, numerem telefonu itd. itd).

Mógłbym sam je napisać, ale nie będą idealne. Mógłbym poszukać forach/stackoverflow, ale też nie jest pewne, że nie zawierają jakiś błędów.

Najchętniej wziąłbym z jakiegoś gotowca napisanego przez profesjonalistów. Wiem, że np. w C# (ASP.NET) są zaszyte gotowe do sprawdzania, podobnie jest chyba
  • 9
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

No i np. dla emaila coś jest: https://github.com/hibernate/hibernate-validator/blob/6ae19900e2951513034534f9aec786689da9b4d8/engine/src/test/java/org/hibernate/validator/test/internal/engine/methodvalidation/returnvaluevalidation/ContactBean.java


@mk321: To jest faktycznie „tylko” test czy walidacja działa poprawnie.

Tu masz „constrainty”, czyli „definicje” co należy zwalidować, np możesz jakieś pole obiektu oznaczyć „constraintem” URL, dzięki czemu system walidacji wie, że ma sprawdzić, że pole
  • Odpowiedz
@MacDada: o to mi chodziło :) Dzięki :)


Właśnie nie mogłem znaleźć tych klas "walidatorów".

Teraz widzę, że od środka wygląda to trochę inaczej niż myślałem, i raczej mniej niż więcej jest oparte na wyrażeniach regularnych (no i jednak nie mogę ich tak
  • Odpowiedz