gpt4 book ai didi

java - 为什么要编译 Java 正则表达式?

转载 作者:行者123 更新时间:2023-11-30 06:01:11 26 4
gpt4 key购买 nike

我知道需要编译 Java 正则表达式才能对字符串进行任何类型的正则表达式模式匹配,但我不明白为什么需要编译它们。

将正则表达式字符串编译成更有效的表示形式是什么?这种表示比字符串更有效吗?

最佳答案

一般来说,正则表达式引擎使用一组指令来了解如何遍历目标文本并匹配其中的部分。我们作为开发人员编写的高级(人类可读)模式就像您用 Java(或任何其他语言)编写的源代码。计算机不会运行您的源代码,它会将源代码编译成计算机可以理解的指令。同样,您的 RegEx 模式被编译成一组 RegEx 引擎(无论编程语言如何)可以处理的指令。

我个人找到了 Regular-Expressions.info site very helpful对于很多解释,尽管他们对引擎内部工作原理的解释有点简单。这answer on SO is decent ,以及其他一些链接。

如果你想要更深入的答案,我会看看 this page其中谈到了正则表达式引擎的本质,即它们是有限状态机

Regular expression engines are implemented as finite state machines (FSM). The pattern you supply is compiled into a data structure that represents this state machine.

When you match a string against this pattern, the regex engine takes each character and decides the state transition within the FSM. If there are no valid state transitions for an input character the match fails.

One of the states in the FSM is a terminating/end state. If the regex engine gets there it reports success.

要回答“它比字符串更有效”的问题,它不能是字符串……您必须获得引擎的低级指令。 String 类型不是一组指令!

关于java - 为什么要编译 Java 正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58289582/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com