使用正则表达式查找的集合...是否存在

发布于 2024-10-04 16:11:33 字数 143 浏览 3 评论 0原文

是否存在某种集合(键,值),可以使用键上的正则表达式匹配找到值。

当然,我可以循环遍历所有键并进行匹配,但我想知道是否可以进行更智能的操作。

如果没有,任何有关如何实现这一目标的想法将不胜感激。

蒂亚·

索伦

Does there exist some kind of collection (key, value) where values can be found using a regular expression match on the key.

Of course I could loop through all the keys and do a match, but I was wondering if something smarter is possible.

If not, any ideas on how to acomplish this would be greatly appreciated.

TIA

Søren

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

魂ガ小子 2024-10-11 16:11:33

您可以使用 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.

当到达模式末尾时,返回所有当前选定的节点。如果所选节点的数量变为零,则中止并返回一个空集。

如果使用分支,您将必须探索模式的所有可能组合。

Russ Cox 关于该主题的文章是有关高效正则表达式的好读物。

You could use a Trie structure, and walk it according to a simple regular expression. It would be difficult to adopt an existing regex library for this purpuse, though.

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.

When reaching the end of the pattern, return all currently selected nodes. If the number of selected nodes becomes zero, abort and return an empty set.

If using branches, you would have to explore all possible combinations of the pattern.

A good read about efficient regular expressions is Russ Cox articles on the subject.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文