2010-11-24 2 views
0

키의 정규식 일치를 사용하여 값을 찾을 수있는 일종의 컬렉션 (키, 값)이 있습니까?RegEx 조회를 사용한 콜렉션이 있습니다.

물론 모든 키를 반복하여 일치시킬 수도 있지만 더 똑똑한 것이 가능한지 궁금합니다.

그렇지 않은 경우이 방법을 구현하는 방법에 대한 아이디어는 크게 감사하겠습니다.

TIA

소렌

+0

이것은 O (1) 조회를 수행하는 것이 매우 어려울 것이며 O (logn)조차도 불가능하다는 것을의 미합니다. O (n)은 가능하지만 목록을 사용할 수도 있습니다. – leppie

답변

0

당신은 Trie structure 사용하고, 간단한 정규 표현식에 따라 걸을 수있다. 그러나이 퍼 퓨즈에 기존의 정규 표현식 라이브러리를 채택하는 것은 어려울 것이다.

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. 

패턴 끝에 도달하면 현재 선택된 모든 노드를 반환합니다. 선택된 노드의 수가 0이되면 중단하고 빈 세트를 반환합니다.

가지를 사용하는 경우 가능한 모든 패턴 조합을 탐색해야합니다.

효율적인 정규 표현식에 대한 정보는 Russ Cox articles on the subject입니다.