基于 DFA 的 Java 正则表达式引擎(带 Capture)

发布于 2024-08-15 20:02:18 字数 146 浏览 8 评论 0原文

Java 是否有任何(免费)正则表达式引擎,可以将正则表达式编译为 DFA,并在匹配 DFA 时进行组捕获?

我发现了 dk.brics.automaton 和 jrexx,它们都编译为 DFA,但似乎都无法进行组捕获。而我发现的其他引擎似乎可以编译为 NFA。

Are there any (free) regular expression engines for Java, that can compile a regular expression to a DFA, and do group capturing while matching the DFA ?

I've found dk.brics.automaton and jrexx, which both compile to DFA, but neither seems to be able to do group capture. While the other engines I've found seem to compile to NFA.

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

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

发布评论

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

评论(5

躲猫猫 2024-08-22 20:02:18

试试这个(可能不是 DFA,但比 java.util 更快) http://jregex.sourceforge .net/gstarted-advanced.html#ngroups,或这个:http://userguide.icu- project.org

根据该测试:http://tusker.org/regex/regex_benchmark.html ,两者都很快(我们都知道基准测试只测试基准测试创建者想要测试的内容)。

当我需要非常快的 DFA 正则表达式时,我生​​成了一个使用 grep 的进程;-)(对于 6GB 的日志文件,它将我的时间从 10 分钟缩短到几秒钟)。

try this one (probably not DFA but faster than java.util) http://jregex.sourceforge.net/gstarted-advanced.html#ngroups, or this one: http://userguide.icu-project.org

according to that test: http://tusker.org/regex/regex_benchmark.html, both are fast (we all know that the benchmarks only tests what the creator of the benchmark wanted to test).

When I needed really fast DFA regex I have spawned a process that used grep ;-) (For a 6GB log file it cut my times from 10minutes to a few seconds).

一紙繁鸢 2024-08-22 20:02:18

我最近写了一个:tree-regex

I recently wrote one: tree-regex.

思念绕指尖 2024-08-22 20:02:18

对于 C,有 TRE 和 Google 的 RE2 库。 TRE使用DFA,RE2使用NFA(据我了解),两者都可以进行子组匹配。但我没有看到这样的Java库。

For C there is TRE and Google's RE2 libraries. TRE uses DFA, RE2 uses NFA (as far as I understand), both could subgroup matching. But I didn't see such a library for Java.

予囚 2024-08-22 20:02:18

您可以尝试 Pat 正则表达式库 @ http://www.javaregex.com/

you can try Pat regular expressions library @ http://www.javaregex.com/ .

好菇凉咱不稀罕他 2024-08-22 20:02:18

dk.brics.automaton 是 DFA 确实可以捕获组。我希望这个功能在这个问题出现后的两年内是新的。查看 AutomatonMatcher 类。

请参阅http://www.brics.dk/自动机/doc/dk/brics/automaton/AutomatonMatcher.html#group(int)

dk.brics.automaton is DFA does appear to do capturing groups. I expect that feature is new in the two years since this question. Check out class AutomatonMatcher.

See http://www.brics.dk/automaton/doc/dk/brics/automaton/AutomatonMatcher.html#group(int)

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