Obecnie pracuję nad książką na temat wyrażeń regularnych, a jednym z problemów praktycznych jest napisanie wyrażenia regularnego pasującego do ciągów znaków, które mają taka sama liczba a, jak z i b, jak y. Wcześniej wypowiadałem następujące regularne wyrażenie.Wyrażenie regularne, które pasuje do ciągów znaków z taką samą liczbą liter a, jak z i b jako y
^(?=[^az]*([az][^az]*[az][^az]*)*$)(?=[^by]*([by][^by]*[by][^by]*)*$).*$
Problem polega na tym, że nieprawidłowo mecze gdy A i oo są równe i B i Y są równe (tj AZZZ będzie pasować, ale ma więcej, niż się z tych). Czy istnieje sposób modyfikowania mojego wyrażenia regularnego, aby pasował poprawnie lub czy stosuję niewłaściwe podejście?
Jakiego narzędzia/języka używasz do testów? Czy "A" i "Z" są zawsze zamawiane ("AAAZZZ"), czy też można je wymieszać ("AZZAAZA")? To naprawdę nie brzmi jak zadanie, w którym można by użyć regex. –
Korzystam z następujących elementów, aby przetestować: [RegEx101] (https://regex101.com/r/voyrhI/1). A i Z, B i Y mogą być pomieszane według przykładów książek. – WBilger
Czy książka zawiera wyrażenia rekursywne? – shawnt00