Наборы символов символов шаблона - PullRequest
0 голосов
/ 22 сентября 2011

Есть ли способ получить наборы символов шаблона?

Например, у меня есть регулярное выражение [az]+[A-Z]*.Тогда набор символов первых символов равен a и z.Тогда набор символов второго символа равен a и z.Тогда набор символов третьего символа равен a и z.....

Задача: У меня есть шаблон и строка.Теперь я хочу узнать, начинается ли строка с тех же символов, что и строка, соответствующая шаблону.

ОБНОВЛЕНИЕ:

Например, у меня естьрегулярное выражение [az]\\:[A-Z]*.Тогда набор символов первых символов равен a и z.Тогда набор символов второго символа равен :.Тогда набор символов третьего символа равен A-Z.Тогда набор символов четвертого символа равен A-Z.....

1 Ответ

0 голосов
/ 08 октября 2011

Звучит так, будто вы запрашиваете функцию, которая принимает регулярное выражение в качестве аргумента и возвращает набор символов, которые могут совпадать с заданным смещением, в строку для сопоставления:

Set<Character> getSymbols(String regEx, int offset);

Это нетривиально.

Используя ваш пример:

getSymbols("[az]\\:[A-Z]*", 1)

должен вернуть ['a', 'z'],

getSymbols("[az]\\:[A-Z]*", 2)

должен вернуть [':'],

getSymbols("[az]\\:[A-Z]*", 3)

должен вернуть ['A', 'B', 'C', ..... 'Y', 'Z']

Но это тривиальный ввод. Что если ввод был:

getSymbols("[abc]*FRED[xzy]*", 5)

Теперь вам нужно учесть тот факт, что любое количество символов «abc» может продолжаться по FRED и сместит все остальное, что приведет к результирующему набору, подобному следующему:

1: ['a', 'b', 'c', 'F']
2: ['a', 'b', 'c', 'F', 'R']
3: ['a', 'b', 'c', 'F', 'R', 'E']
4: ['a', 'b', 'c', 'F', 'R', 'E', 'D']
5: ['a', 'b', 'c', 'x', 'y', 'z', 'F', 'R', 'E', 'D']

Коду, который решает, который должен анализировать регулярные выражения, который имеет большую выразительность со всеми управляющими символами (\ w для пробела и т. Д.), Затем требуется рекурсивный алгоритм для построения выходного набора. *

Если это то, что вы намереваетесь, то следующий вопрос: «Какую проблему вы действительно пытаетесь решить?»

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