簡體   English   中英

RegexBuddy中的“步驟”是什么?

[英]What are “steps” in RegexBuddy?

“調試”選項卡上的RegexBuddy顯示了如何逐步執行正則表達式。 但是這些步驟到底意味着什么? 每個步驟背后都需要進行哪些操作?

步數基本上是更改輸入中當前位置的次數,這是性能的很好指標。

“當前位置”可以任何字符處或字符之間 (包括整個輸入之前和之后)。

為簡化起見,正則表達式引擎通過沿輸入移動當前位置並評估正則表達式在該位置是否匹配來處理輸入。 他們還跟蹤比賽中正則表達式中的位置。

我不想把這個答案變成一個regex教程,但是... regex引擎在匹配時總是消耗盡可能多的輸入。 舉一個簡單的例子,給定輸入"12345"和正則表達式.*1.* ,正則表達式引擎將首先應用.*消耗所有輸入,而將位置保留在輸入的末尾,不匹配1 ,然后返回通過一次“不消耗”一個字符來跟蹤 ,直到找到1 ,然后繼續。 您會看到這僅需要9個步驟即可處理初始.*

相反,如果正則表達式為[^1]*1.* ,則正則表達式將僅一步就與"1"匹配。

在RegexBuddy的調試器中,步驟是當regex引擎匹配某項或匹配某項失敗。 到目前為止,與某個字符匹配的步驟由正則表達式匹配的所有字符表示,通常比上一步多一個字符。 到目前為止,已匹配的字符加上“ ok”表示與某個位置(如單詞邊界)相匹配的步驟。 到目前為止,匹配的字符加上“ backtrack”指示了未能匹配某些內容的步驟。

如果在調試器中單擊任何匹配的字符,則RegexBuddy在正則表達式中選擇與那些字符匹配的標記,並突出顯示調試器中與該標記匹配的所有字符。 如果單擊“確定”或“回溯”指示器,則RegexBuddy會選擇正則表達式中匹配或不匹配的令牌。

使用鍵盤移動光標與單擊具有相同的效果。 按下鍵盤上的End鍵將光標移至步驟的結尾。 然后,按向上或向下箭頭,將光標移至上一個或下一個步驟,同時將光標保持在該步驟的末尾。 通過以這種方式移動光標,您可以輕松地了解正則表達式引擎如何逐步執行正則表達式以及該過程中哪些字符是匹配項和回溯項。

有關更多詳細信息,請參見RegexBuddy幫助文件中的以下兩個頁面: https : //www.regexbuddy.com/manual.html#debug https://www.regexbuddy.com/manual.html#benchmark

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM