Эквидистантный шаблон письма с использованием регулярных выражений - PullRequest
2 голосов
/ 06 октября 2019

Рассмотрим следующее:

У нас есть сетка с X , O , которая представлена ​​единственной строкой T .

Моя задача - проверить, существует ли подмножество S из X в строке T , где расстояние между каждым символом в S равно (т.е. мы можем наблюдать эквидистантную последовательность букв). Я приведу несколько примеров.

XXX - верно, поскольку расстояние равно 0

X o X o X - верно, поскольку расстояние равно 1

X oxX oo X - истина, так как расстояние равно 2 и существует подмножество X с индексами: [0, 3, 6]

Можно ли решить эту задачу с помощью регулярного выражения? Я придумал это: ".*?((X|O).{0,2})\1\2.*", хотя в некоторых тестах это не удается (X ox X ox X совпадает, а X oo X ox X - нет).

Кроме того;Есть ли умный способ достичь этого с помощью одного регулярного выражения? Я предполагаю, что мы все еще можем генерировать несколько регулярных выражений для каждого расстояния, которое нам нужно проверить, например: "(.*?(X|O)\1\1.*)|(.*?(X|O).\1.\1.*)|(.*?(X|O).{2}\1.{2}\1.*)"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...