Próbuję utworzyć funkcję Python, która może wziąć zwykły angielski opis wyrażenia regularnego i zwrócić wyrażenie regularne do dzwoniącego.Czy potrzebny jest bardziej deklaratywny sposób wyrażania wyrażeń regularnych? :)
Obecnie mam na myśli opis w formacie YAML. Możemy więc zapisać opis jako surową zmienną łańcuchową, która jest przekazywana do tej innej funkcji, a wynik tej funkcji jest przekazywany do modułu "re". Poniżej znajduje się dość uproszczony przykład:
# a(b|c)d+e*
re1 = """
- literal: 'a'
- one_of: 'b,c'
- one_or_more_of: 'd'
- zero_or_more_of: 'e'
"""
myre = re.compile(getRegex(re1))
myre.search(...)
itp
nikomu, że coś z tego rodzaju byłoby szerszego zastosowania? Czy znasz już istniejące pakiety, które mogą to zrobić? Jakie są ograniczenia tego podejścia? Czy ktoś myśli, mając deklaratywny ciąg w kodzie, uczyniłby go bardziej możliwym do utrzymania?
Może JSON lub XML? DTD lub XSD może również dobrze opisać strukturę danych. – codymanix
Więc zamiast złożonego wyrażenia zajmującego całą linię zajmie całą stronę :) –
Osoby, które znają wyrażenia regularne, są z nim wygodne, ale dla wszystkich innych wygląda na to, że alfabet zwymiotował. To może być problem, ale nie jestem pewien. W końcu możesz powiedzieć to samo, co języki programowania dla ludzi, którzy programują, a którzy nie. Może być fajnie to zrobić z obiektami i funkcjami instad of string, ale nie jestem pewien, jaki byłby najlepszy sposób implementacji. +1 za innowacje. – psicopoo