Wyrażenia regularne - python

0

Witajcie, potrzebuje pomocy bo to jest zupelnie chore jak probuje znalezc swojego grala... programuje w pythonie kontroler do urzadzenia, urzadzenie wysyla mi ramke zwrotna w postaci łańcucha znaków i chce z niej wyciagnac odpowiedź na rozkaz wyslany...

Wyglada to zawsze mniej wiecej tak:
[6][A lub B][numer od 1 do 99][rozkaz][0xFE (albo 253)] i dalej.

Czyli:
Znam mniej wiecej pozycje rozpoczynajaca rozkaz (od 4 lub 5 znaku) i warunek konczacy rozkaz (liczba 253). Jak powinno brzmiec to wyrazenie...? Przeszukuje teksty rozne o wyrazeniach ale ni cholery to mi nie wychodzi... pomoze ktos?

0

A czym jest rozkaz? Bo jak liczbą to jak odróżniasz numer od rozkazu?

0

Moze byc i cyfra i litera. Sam interpreter tego to jest zupelnie inna historia, ale to czego nie wiem to wyluskanie tej informacji do interpretacji. Nie moze byc tylko sekwencji 253 bo to automatycznie oznacza koniec rozkazu.

1

Jeżeli [numer od 1 do 99] może być jedno albo dwucyfrowy a rozkaz może zaczynać się od cyfry to jesteś w dupie :)

0

To jak zinterpretować np
6 A 195 253...
Czy jako 19 i rozkaz 5 czy 1 i rozkaz 95?

0
Shalom napisał(a):

To jak zinterpretować np
6 A 195 253...
Czy jako 19 i rozkaz 5 czy 1 i rozkaz 95?

Mam do tego osobną funkcję która zlicza kolejne komunikaty, wystarczy to włożyć w 2 if'y. Jeden dla jednocyfrowych wartości, drugi dla dwucyfrowych.

0

Nie odpowiedziałeś na pytanie.

0
Patryk27 napisał(a):

Nie odpowiedziałeś na pytanie.

Odpowiedziałem. Program wie jaka cyfra powinna być odesłana. Po niej następuje rozkaz(o nieokreślonej liczbie znaków,czasami przedzielanych średnikiem(bo oprócz odpowiedzi są parametry, odpowiedź typu : "EU;27882") i następnie jest 253. Teraz jak to ładnie wyciąć z całego bloku stringa?

3

Wiesz co, metodą "odsłaniania kolejnych tajemnic" komunikacji w Twim programie, to nie uzyskasz pomocy. Już pojawił się średnik. Czy coś jeszcze? Mam propozycję. Napisz klika linijek komunikatów z informacją jak to interpretować. Wybierz te które w Twoim mniemaniu mogą być problematyczne. Coś jak.

ABCDEFGHIJ - polecenie X, argument Y, zakończone na 253, pole ABC nieważne, średnik należy do komendy
...

Jak podasz kilka takich przykładów, szczególnie trudnych i dla Ciebie problematycznych, to będzie można coś poradzić jeśli chodzi o regexp'a. Jak nie, to będziesz się z tym jeszcze długo bujał :-/

0

Odpowiedziałem. Program wie jaka cyfra powinna być odesłana.

Guzik zrobiłeś a nie odpowiedziałeś. Wyrażenie regularne jest jedno i wcale nie wie jaka cyfra powinna być odesłana. Ale jak chcesz być taki kozak to zrób takie:
6(?:A|B)(\w+)(?:0xFE|253)
i voila, w grupie złapiesz sobie swój numer oraz rozkaz.

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