我对正则表达式引擎在重复后如何处理文字感到困惑。 我在读这个。 http://www.regular-expressions.info/print.html
因此,它讨论了有关匹配双引号字符串的问题。
假设您要匹配双引号字符串。听起来很简单。我们可以有任意数量的任何字符 在双引号之间,因此«“。*”»似乎可以解决问题。点匹配任何字符,并且 星号允许点重复任意次,包括零次。
现在正则表达式如何知道何时停止?它不会到达文件末尾吗? 我的分析: 我想到了两种可能的工作方式。
方法1:
正则表达式会找到一个引号,然后它将匹配任何字符,直到文件(或该行)的末尾。然后它将“意识到”没有引号,因此它将返回到{{1 }}(在最后一个字符处停止),并继续向后移动直到匹配双引号。如果此方法正确,.*
听起来是个坏主意。
或 方法2: 正则表达式将匹配双引号,然后它将继续匹配任何字符,直到到达双引号为止。我认为这不太可能,因为这本书暗示了其他情况。
当然,我可以测试这些方法以查看哪个是实际方法,但是可能存在完全不同的方法。
旁注...当然,我很想了解正则表达式引擎如何处理X或Y,因为这会使您更好地使用它(就像了解闭包的工作原理一样),并且因为我感觉不好关于使用我不了解的东西(典型的开发人员)。