正規表現テストツール、チェックシート、コンバーター – 猜測をやめ、マッチングを開始する
正規表現は強力だが、デバッグするのが非常に難しい。無料の3つのツールにより使いやすくなる:マッチハイライト付きのライブテストツール、構文検索用のチェックシート、および正規表現の種類を切り替えるコンバータ。
ソフトウェア開発における定番のジョークは、正規表現を書くと、2つの問題が生まれることです。パターンは時々うまくいくものの、6ヶ月後にはそれを解読するには博士号と祈りが必要です。正規表現はその神秘的な評価を得ていますが、それも不可欠です。メール検証、ログ解析、URL抽出——これらをforループで置き換えるのではなく、より効果的に使いこなすことを学んでください。
3つのツールが、正規表現を恐れの原因から実用的な資産に変えることができます:a リアルタイムテストツール、 チェックシート、およびa 味付け変換ツール。それぞれがその位置を獲得する方法を以下に示します。
正規表現がまだ重要である理由(そしてなぜそれが苦痛であるか)
パターンマッチングはバックエンド開発者、品質保証エンジニア、データエンジニアにとって基本的なスキルです。一つのよく設計された正規表現は、数十行の文字列解析コードを置き換えることができます。問題は概念ではなく、構文です。量詞、先行確認、キャプチャグループ、文字クラスそれぞれに特徴があります。さらに、言語間の違い(JavaScriptの正規表現とPythonの正規表現は兄弟ではなく、双子ではない)を加えると、デバッグは推測ゲームになります。
開発者が通常に従うワークフロー:パターンを書く、スクリプトに貼り付ける、スクリプトを実行し、頭をひねり、繰り返す。これはより速い方法があります。
ツール1 – 正規表現テストツール:タイプしながらマッチを確認
の オンライン正規表現テストツール リアルタイムでマッチをハイライトします。スクリプトを実行する必要もなく、ブラウザコンソールを開く必要もありません。パターンをタイプし、エンジンが入力処理を進めるにつれてマッチが光り始めます。
以下はメール検証の例です:
- パターン:
[a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,} - テスト文字列:
Contact us at hello@example.com or support@iotools.cloud for help.
パターンを正規表現テストツールに貼り付け、テスト文字列を追加し、両方のメールアドレスがすぐにハイライトされます。を変更し、長さのTLD(例:)がマッチセットから即座に除外されるようにします。リロードや推測の必要はありません。 {2,} に {2,4} キャプチャグループも即座に表示されます。ローカル部分の括弧を追加—— .studio ——そしてグループ1がマッチパネルに表示され、ユーザー名部分のみを示します。これにより、抽出ロジックの構築が非常に簡単になります。コードに組み込む前に、各グループが実際にキャプチャする内容を確認できます。
テストツールは、フラグ(大文字小文字無関係([a-zA-Z0-9._%+\-]+)@、グローバル
、マルチライン i)をスイッチとして表示しており、パターンを書き直すことなく、各フラグの影響をテストできます。 gツール2 – 正規表現チェックシート:タブ切り替えなしで構文を確認 m経験豊富な開発者でも、は単語境界かバックスペースかを忘れてしまいます。
正規表現チェックシート
はカテゴリごとに整理されており、数秒で再開できます: アンカー: (開始), (終了),
- (単語境界),
^(非単語境界)$量詞:(0または1),\B(範囲), - 量詞後のラズマッチ(非貪欲)
*(0+),+(1+),?およびその否定{n,m}グループ:?キャプチャグループ, - 文字クラス:
[abc],[^abc],\d,\w,\s非キャプチャグループ, - 名前付きグループ
(...)先行確認/後見確認:(?:...)各項目はトークン、英語の説明、および例を示しており、必要に応じて1日目にブックマークする参考資料になります。今、そのようにできます。(?P<name>...)ツール3 – 正規表現変換ツール:言語間の変換なしの苦痛を回避 - すべての開発者が最終的に陥る険しい罠:Pythonで正規表現を書くと、うまく動くが、JavaScriptに貼り付けると静かに失敗する。または、まったく異なるものにマッチする。
(?=...),(?!...),(?<=...),(?<!...)
正規表現変換ツール
はPCRE、JavaScript、Pythonなど、さまざまな味付けの間をパターンを変換します。名前付きキャプチャグループは、構文が異なる明確な例です:
Python(PCREスタイル):
の どちらも日付(例:)をマッチしますが、キャプチャグループの参照方法は異なります:Pythonは を使用し、JavaScriptは
- を使用します。変換ツールが構文変換を処理するため、パターンがスタックを移動したときになぜ破損したかをドキュメントを調べる必要がなくなります。
(?P<year>\d{4})-(?P<month>\d{2}) - JavaScript:
(?<year>\d{4})-(?<month>\d{2})
変換ツールがスムーズに処理する他の違い:貪欲量詞(PCREのみ)、原子グループ、Unicodeプロパティエスケープ、および 2024-03のUnicodeモードでの振る舞い。 match.group('year')すぐに試してみるべき3つの実用的な正規表現例 match.groups.year以下のものを
にコピーして実験してください: \d メール検証
標準的なメールアドレスをマッチします。RFC 5322完全版(その正規表現は数千文字に達する)ではなく、入力検証用の99%ケースをカバーします。
URL抽出 正規表現テスター raw textからHTTPおよびHTTPSのURLを抽出します。不構造コンテンツやログファイルからリンクターゲットをスクレイピングする際に有用です。
Apacheアクセスログ解析
[a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,}
標準Apacheアクセスログ行からIPアドレス、タイムスタンプ、HTTPメソッド、パス、ステータスコード、応答サイズをキャプチャします。以下の内容でテストしてください:
テストツール、チェックシート、変換ツール — 推測をやめ、マッチを開始 2
https?://[^\s/$.?#].[^\s]*
テストツール、チェックシート、変換ツール — 推測をやめ、マッチを開始 1
アパッチアクセスログの解析
^(\S+) \S+ \S+ \[([^\]]+)\] "(\S+) (\S+) \S+" (\d{3}) (\d+)
標準アパッチアクセスログ行からIPアドレス、タイムスタンプ、HTTPメソッド、パス、ステータスコード、および応答サイズを取得します。次の項目でテストしてください: 192.168.1.1 - - [01/May/2024:12:00:00 +0000] "GET /index.html HTTP/1.1" 200 1234
恵 スコアボードが到着しました!
スコアボード ゲームを追跡する楽しい方法です。すべてのデータはブラウザに保存されます。さらに多くの機能がまもなく登場します!
