Czy istnieje jedno wyrażenie regularne, które będzie pasowało do ciągów znaków, które mają litery „a” lub „x” przy niektórych indeksach?
Na przykład indeksy mogą być
0, 3, 6
1, 4, 7
2, 5, 8
Możliwe wzorce według tych indeksów:
"a--a--a--"
"-x--x--x-"
"--a--a--a"
Inne wystąpienia "a"
lub "x"
Są w porządku. Chcę tylko upewnić się, że niektóre indeksy zawierają "a"
.
EDYTOWAĆ: Ten problem jest podproblemem gry w kółko i krzyżyk. Chcę ustalić, czy istnieje zwycięzca, używając wyrażenia regularnego. Nie chcę odpowiedzi na to pytanie. Chcę tylko trochę popchnąć, aby pomóc mi przejść do ostatecznej odpowiedzi. Powyższe ma pomóc mi w znalezieniu wyrażenia regularnego, które zidentyfikowałoby, czy istnieje pionowy zwycięzca.
Odpowiedzi:
2 dla odpowiedzi № 1Możesz użyć tego wyrażenia regularnego:
([a-zA-Z])..1..1
([a-zA-Z])
dopasuje i uchwyci każdą literę w grupie # `- Następnie kolejne 2 wystąpienia tej samej litery o
n+3
in+6
pozycje są dopasowywane za pomocą referencji wstecznej1
, gdzien
jest pierwszą pozycją litery.
3 dla odpowiedzi № 2
Jeśli Twój kółko i krzyżyk wygląda jak łańcuch o długości 9 znaków, przetestowanie tego wzoru powinno wystarczyć, aby dowiedzieć się, czy istnieje pionowa linia:
a..a..a
1 dla odpowiedzi nr 3
Od a
pojawia się co 3 znaki, (a..)*
dopasuje te powtórzenia. Następnie wystarczy poprzedzić to wzorem pasującym do wymaganej liczby znaków przed nim, co jest po prostu n-1
.
wzorce.
Tak więc dla trzech przykładów, które podałeś, to jest
^(a..)*
^.(a..)*
^..(a..)*