RegexBuddyタブの[デバッグ]は、正規表現がどのように実行されるかを示します。しかし、そのステップはどういう意味ですか?あらゆるステップの後ろにはどのような操作がありますか?RegexBuddyの「ステップ」とは何ですか?
答えて
基本的にステップ数は入力の現在の位置が変更された回数で、パフォーマンスの指標として非常に優れています。
「現在位置」に任意の文字または(全体の入力の前と後を含む)間の文字であってもよいです。
簡略化すると、正規表現エンジンは、入力に沿って現在の位置を移動し、正規表現がその位置で一致するかどうかを評価することによって入力を処理します。彼らはまた、マッチが最大である正規表現内の位置を追跡します。
私はこの答えを正規表現のチュートリアルにしたくないのですが、正規表現エンジンは常にマッチングしながら可能な限り多くの入力を消費します。簡単な例を挙げれば、入力が"12345"
と正規表現.*1.*
の場合、正規表現エンジンはまず、入力の最後にある位置を残してすべての入力を消費し、1
と一致しない場合は、バックトラックと一致するのは "uncomsuming"一度に1文字ずつ、1
が見つかるまで続けてください。これは最初の.*
を処理するために9ステップだけかかることがわかります。
これに対して、正規表現が[^1]*1.*
の場合、正規表現は"1"
と1ステップで一致します。
ありがとう!しかし、この「入力の現在の位置が何回変更されたか」の詳細をいくつか提供することはできますか? –
@ ConstantinSmolyanin私は答えを更新しましたが、http://www.regular-expressions.info/への訪問はおそらく順調です。 – Bohemian
@SeinopSysもしあなたがregexbuddyを持っていれば、 "Debug Everywhere"を試してみてください。バックトラックしなければならない時はあなたの目標に応じて、一致するかどうかを確認することができます。 –
RegexBuddyのデバッガでは、正規表現エンジンが何かにマッチするか、何かにマッチすることができません。文字にマッチするステップは、それまでのステップより1文字多い通常の正規表現でマッチしたすべての文字で示されます。単語の境界のような位置に一致するステップは、今までに一致した文字と "ok"で示されます。何かに合致しなかったステップは、今までにマッチした文字と「バックトラック」によって示されます。
デバッガで一致する文字をクリックすると、RegexBuddyはその文字に一致する正規表現内のトークンを選択し、そのトークンと一致するデバッガ内のすべての文字を強調表示します。 "ok"または "backtrack"インジケータをクリックすると、RegexBuddyは正規表現内で一致した、または一致しなかったトークンを選択します。
キーボードでカーソルを移動すると、クリックするのと同じ効果があります。キーボードのEndキーを押すと、カーソルがステップの最後に移動します。次に矢印を上下に押すと、そのステップの最後にカーソルを置いたままカーソルが前または次のステップに移動します。このようにカーソルを動かすことで、正規表現エンジンが正規表現をどのように辿るか、どの文字がマッチして途中でバックトラックするかを簡単に追うことができます。
詳細については、RegexBuddyのヘルプファイルでこれらの2つのページを参照してください。 https://www.regexbuddy.com/manual.html#debug https://www.regexbuddy.com/manual.html#benchmark
- 1. DockerとCI/CD - 最終展開のステップは何ですか?
- 2. RegexBuddyはどこで作業データを使用するのですか?
- 3. 機械学習のトレーニングのステップ時間とは何ですか?論文で
- 4. Mergesort:マージ操作の最後のステップは何ですか?
- 5. (NSTimerのリリースと無効化)の最初のステップは何ですか?
- 6. asp.net mvc 4 - _ViewStart.cshtmlを呼び出す人とステップの順序は何ですか?
- 7. 「複数ステップのOLE DB」エラーは何ですか?
- 8. プログラミング言語の設計と実装、次のステップは何ですか?
- 9. Node.jsでこのエラーメッセージをトレースする次のステップは何ですか?
- 10. ホストメインフレームのChangeman - 各ステップは何を意味していますか?
- 11. cucumber.runtime.CucumberExceptionのエラーは何ですか:Arity mismatch:Javaでのセレンのステップ定義
- 12. Django/Python 2.7から始めるための最初のステップは何ですか?
- 13. データを処理する複数のステップ、JS /角度のパターンは何ですか?
- 14. 前のステップのRCが何であってもJCLステップを実行したいですか?
- 15. モデルをトレーニングするための基本的なステップは何ですか?
- 16. Node.js開発を構築する最初のステップは何ですか?
- 17. メタデータが拒否された場合の次のステップは何ですか?
- 18. Jenkinsパイプラインのノード、ステージ、およびステップの違いは何ですか?
- 19. Tinkerpop Gremlinのrepeat()やその他のステップで二重アンダースコアを使用するとは何ですか?
- 20. 可変ステップでグリッドを作成する最適な方法は何ですか?
- 21. 私のWordpressサイトをhttpからhttpsに変更するときに取るべきステップは何ですか
- 22. Andengineモディファイア、パス内のすべてのステップで何かしますか?
- 23. エアランゲンマップを生成するために使用するステップは何ですか?
- 24. ウェブサイトを開発する際に進むべきステップは何ですか?
- 25. SQLインジェクションを防止するために必要なステップは何ですか?
- 26. Jenkinsで「アーティファクトをアーカイブする」ステップは正確に何をしますか?
- 27. NUnitを使用するために必要なステップは何ですか?
- 28. Values()ステップによって値が返される順序は何ですか
- 29. CMakeは./configureのステップと同じですか?私はUnixのシステムでは、コンパイルしてソースから何かをインストールすることを理解
- 30. コード実行ステップをカウントすることは可能ですか?
この質問は、オフトピックです、それは*一般的なコンピューティング・ハードウェアとソフトウェア*についてですので。 –
それはあなたの考えに比べて、対応するエンジンがどのように機能するかを発見するツールです。 – revo
あなたは 'within' RegexBuddyにプライベートフォーラムがあります。あなたがこの質問をそこに尋ねると、1月の著者が返信する可能性が高いと思いますか?また、[これは素晴らしい正規表現のチュートリアルです](http://www.rexegg.com/regexbuddy-tutorial.html)[デバッグ]セクションへのダイレクトリンクのビットを下にスクロールします。 – zx81