/ / Co to jest wyrażenie regularne, które będzie pasowało do znaku w niektórych indeksach? - java, regex, dopasowywanie wzorców

Co to jest wyrażenie regularne, które będzie pasowało do znaku w niektórych indeksach? - java, regex, dopasowywanie wzorców

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 № 1

Możesz użyć tego wyrażenia regularnego:

([a-zA-Z])..1..1

RegEx Demo

  • ([a-zA-Z]) dopasuje i uchwyci każdą literę w grupie # `
  • Następnie kolejne 2 wystąpienia tej samej litery o n+3 i n+6 pozycje są dopasowywane za pomocą referencji wstecznej 1, gdzie n 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..)*