正则表达式引擎在重复后如何处理文字(即“。*”)?

时间:2018-07-10 03:43:58

标签: regex conceptual concept

我对正则表达式引擎在重复后如何处理文字感到困惑。 我在读这个。 http://www.regular-expressions.info/print.html

因此,它讨论了有关匹配双引号字符串的问题。

  

假设您要匹配双引号字符串。听起来很简单。我们可以有任意数量的任何字符   在双引号之间,因此«“。*”»似乎可以解决问题。点匹配任何字符,并且   星号允许点重复任意次,包括零次。

现在正则表达式如何知道何时停止?它不会到达文件末尾吗? 我的分析: 我想到了两种可能的工作方式。

方法1: 正则表达式会找到一个引号,然后它将匹配任何字符,直到文件(或该行)的末尾。然后它将“意识到”没有引号,因此它将返回到{{1 }}(在最后一个字符处停止),并继续向后移动直到匹配双引号。如果此方法正确,.*听起来是个坏主意。

或 方法2: 正则表达式将匹配双引号,然后它将继续匹配任何字符,直到到达双引号为止。我认为这不太可能,因为这本书暗示了其他情况。

当然,我可以测试这些方法以查看哪个是实际方法,但是可能存在完全不同的方法。

旁注...当然,我很想了解正则表达式引擎如何处理X或Y,因为这会使您更好地使用它(就像了解闭包的工作原理一样),并且因为我感觉不好关于使用我不了解的东西(典型的开发人员)。

0 个答案:

没有答案