什么是"步骤"在RegexBuddy?

时间:2017-01-03 16:19:51

标签: regex regexbuddy

选项卡上的

RegexBuddy" Debug"显示了如何逐步执行正则表达式。但究竟是什么步骤意味着什么?每一步背后都有什么操作?

2 个答案:

答案 0 :(得分:4)

步数基本上是输入当前位置改变的次数,这是一个非常好的绩效指标。

"当前位置"可能 at 任何字符或 字符之间(包括整个输入之前和之后)。

简化它,正则表达式引擎通过沿输入移动当前位置并评估正则表达式是否在该位置匹配来处理输入。他们还会跟踪匹配所在的正则表达式中的位置。

我不想把这个答案变成一个正则表达式教程,但是......正则表达式引擎总是尽可能多地消耗输入而仍然匹配。举一个简单的例子,给定输入"12345"和正则表达式.*1.*,正则表达式引擎将首先应用.*消耗所有输入,在输入结束时离开位置,不匹配一个1,然后回溯 by" uncomsuming"一次一个字符,直到找到1,然后继续。您可以看到这只需要9个步骤来处理初始.*

相比之下,如果正则表达式为[^1]*1.*,则正则表达式只会在一步中匹配"1"

答案 1 :(得分:1)

在RegexBuddy的调试器中,一步是当正则表达式引擎匹配某些东西,或者无法匹配某些东西时。匹配字符的步骤由到目前为止正则表达式匹配的所有字符指示,这通常比前一步骤多一个字符。匹配位置的步骤(如单词边界)由到目前为止匹配的字符加上“ok”表示。未能匹配某些内容的步骤由目前匹配的字符加上“backtrack”表示。

如果单击调试器中的任何匹配字符,RegexBuddy将在正则表达式中选择与这些字符匹配的标记,并突出显示与该标记匹配的调试器中的所有字符。如果单击“ok”或“backtrack”指示符,RegexBuddy将选择匹配或未匹配的正则表达式中的标记。

使用键盘移动光标与单击效果相同。按键盘上的结束键可将光标移动到步骤的结尾。然后按向上箭头或向下箭头将光标移动到上一步或下一步,同时将光标保持在该步骤的结尾。通过这种方式移动光标,您可以轻松地了解正则表达式引擎如何逐步执行正则表达式以及沿途的哪些字符匹配和回溯。

有关详细信息,请参阅RegexBuddy帮助文件中的这两页: https://www.regexbuddy.com/manual.html#debug https://www.regexbuddy.com/manual.html#benchmark