Коллекция с поиском RegEx .... существует ли она - PullRequest
0 голосов
/ 24 ноября 2010

Существует ли какая-либо коллекция (ключ, значение), в которой значения можно найти с помощью совпадения регулярного выражения для ключа.

Конечно, я мог бы пройтись по всем клавишам и сопоставить их, но мне было интересно, возможно ли что-нибудь более умное.

Если нет, то любые идеи о том, как это сделать, будут высоко оценены.

ТИА

Сорен

1 Ответ

0 голосов
/ 24 ноября 2010

Вы можете использовать структуру Trie и выполнять ее в соответствии с простым регулярным выражением. Однако было бы сложно принять существующую библиотеку регулярных выражений для этой цели.

a -> select child 'a'.
[a-z] -> select all children between 'a' and 'z', inclusive.
. -> select all children.
a* -> select all decendants down 'a' branches.
a? -> select current nodes, and any 'a' children.

При достижении конца шаблона верните все выбранные в данный момент узлы. Если число выбранных узлов становится равным нулю, прервите и верните пустой набор.

При использовании веток вам придется изучить все возможные комбинации паттерна.

Хорошее прочтение об эффективных регулярных выражениях - Статьи Расса Кокса по теме .

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