wyrażenia regularne

0

Witam, mam taki problem:
mam skomplikowany wzorzec (nie znany mi w chwili pisania programu) i plik o nazwie abc.txt (gdzie abc to litery w odpowiedniej kolejności na które zaczynają się wszystkie słowa w tym pliku). Zanim rozpocznę szukanie słów pasujących do wzorca w tym pliku chciałbym wcześniej sprawdzić, czy w ogóle jest możliwość, żeby słowo rozpoczynające się od liter abc pasowało do wzorca.

Przykładowo, mamy taki wzorzec ^h[a-d]n.+[a-z]$ (w rzeczywistości będzie bardziej skomplikowany)
i chciałbym z góry wiedzieć, że słowa pasujące do wzorca mogę znaleźć w pliku han.txt, ale w pliku hen.txt już nie.

Tutaj pojawia się moje pytanie, czy ktoś wie jak coś takiego zrobić, być może istnieją jakieś funkcje pozwalające sprawdzać zgodność wzorców. Z góry dziękuję za odpowiedzi.

0

Pytania dodatkowe:

  1. Czy twoje zapytanie regex będzie mogło się zaczynać od znaków ogólnych jak np /d /w .?
  2. Czy możliwie zapytania to zamknięty zbiór znanych z góry (lub chodź zasada ich tworzenia będzie znana) czy będą one wpisywanych przez użytkownika
0

No właśnie nie będą znane z góry (będą wprowadzane przez użytkownika), a co do samego wyrażenia, to będzie dowolne, więc będzie mogło się zaczynać od dowolnych znaków.

0

niestety, wydaje mi sie ze bedziesz musial napisac jakis mikroparser regexow, tzn rozbijac wyrazenia top-level na skladowe po |, rozpoznawac nawiasy, i starac sie wyciac z regexpa wszystko poza tym co moze trafic w pierwsza trojke znakow..

^h[a-d]n.+[a-z]$
-> ^h[a-d]n

rfc email 2822:
((?>[a-zA-Z\d!#$%&'+-/=?_{|}~]+\x20*|"((?=[\x01-\x7f])[^"\\]|\\[\x01-\x7f])*"\x20*)*(?<angle><))?((?!\.)(?>\.?[a-zA-Z\d!#$%&'*+\-/=?^_{|}~]+)+|"((?=[\x01-\x7f])["\]|\[\x01-\x7f])")@(((?!-)[a-zA-Z\d-]+(?<!-).)+[a-zA-Z]{2,}|[(((?(?<![).)(25[0-5]|2[0-4]\d|[01]?\d?\d)){4}|[a-zA-Z\d-]*[a-zA-Z\d]:((?=[\x01-\x7f])[</sup>\[]]|\[\x01-\x7f])+)])(?(angle)>)$
-> ????
niełatwo..

1 użytkowników online, w tym zalogowanych: 0, gości: 1