正規表現の初心者向けガイド(Regex)
正規表現は、文字列内で検索できるパターンを形成する一連の文字です。正規表現はのために使用することができます 検証 クレジットカード番号の検証などに サーチ すなわち、複雑なテキストマッチを通して、そして 一致したテキストを置き換える 他の文字列と一緒に。多言語サポートもあります - 一度習得すれば、さまざまなプログラミング言語で使用できます。.
私は少数の人々が正規表現を最初に見て、それを完全に無視するのを見ました。彼らのせいではありません。 regexの構文は複雑で、コマンドライン言語と同じように多くの問題を引き起こします。しかし、それからすべての新しいことは怖いですし、最初は学ぶことは不可能です。それで、Horatiusの言葉を借りてこれを言います。 始めて、大胆になり、そして賢明であるように冒険しなさい.
正規表現について
Regexは神経科学と数学にその起源があり、テキスト検索のためのQEDテキストエディタでKen Thompsonによって1968年にプログラミングで実装されただけです。今ではPerl、Java、Python、Ruby、そしてJavaScriptのような多くのプログラミング言語の一部です.
正規表現のしくみの例をいくつか見てみましょう。.
私の例ではJavaScriptを使用します。今、初心者レベルに合格するためには、すべてを学ぶ必要があります。 文字、クラス、数量詞、修飾子、およびメソッド 正規表現で使われます。これがMozilla Developer NetworkのRegular Expressionページへのリンクです。ここにはそれらすべてを含むテーブルが表示されます。また、この記事の最後にあるチートシートを最もよく使われる文字で参照することもできます。.
説明付きの簡単な例を見てみましょう。これは正規表現です.
これは、上記の正規表現が1行の中で、文字 'B'とそれに続く 'a'から 'z'、 'A'から 'Z'までの任意の文字の1つと0から0までの数字を探すものです。 9.
強調表示されている行の一致の例を次に示します。
バスケット, バルブ, B12 ビタミン, BaSO 4, N 紀元前 会社
上記の正規表現はで検索を停止します バスケット そして肯定的な回答を返す。それは理由です グローバル修飾子g
'指定する必要があります あなたが正規表現にすべての可能なマッチを調べて欲しいならば.
それでは、JavaScriptでこの式を使用する方法を見てみましょう。の テスト
メソッドは行きます:マッチが見つかった場合 本当の
, それ以外の 偽
.
var input = "あなたのテスト文字列"、regex = / B [a-zA-Z \ d] + /; if(!regex.test(input))alert( '一致するものが見つかりません');それ以外の場合は警告(「一致が見つかりました」)。
別の方法を試してみましょう。 一致
配列で見つかった一致を返す.
var input = "あなたのテスト文字列"、regex = / B [a-zA-Z \ d] + / g、/ *すべての一致を得るためにグローバル修飾子 'g'を正規表現に追加しました* / ary = input.match(正規表現); if(ary === null)アラート( '一致するものが見つかりません')。それ以外の場合はアラート(「一致するものは:」+ ary.toString())。
ひもはどうですか 交換する
? 今正規表現でそれを試してみましょう.
var input = "あなたのテスト文字列"、regex = / B [a-zA-Z \ d] + / g; alert(input.replace(regex、 "#"));
以下はあなたが微調整するためのcodepenです。 「JavaScript」タブをクリックしてJSコードを表示してください。.
演習
演習のために、あなたはグーグルすることができます “正規表現の練習” そしてそれらを解決してみてください。難易度に応じて、これらのエクササイズを試みるときに何を期待するかです。.
基本
私にできること パスワードを検証する 初心者には十分です。そのため、8文字から16文字までの長さの英数字でパスワードを検証します。使用できる特殊文字は英数字です。.
中級
実世界のデータを使って練習したり、次のような正規表現のポイントをいくつか学ぶ必要がある場所です。 先読み、アサーションの先読み そして 一致するグループ;
- PINコード、16進数、日付、EメールID、浮動小数点を検証する.
- 末尾のゼロ、空白、一致する単語のセットを置き換える
- URLのさまざまな部分を抽出する
高度な
あなたは上記の演習の解決策を最適化することができます - 電子メールのための最も最適な正規表現はその中に何千もの文字を持っています - だから あなたが快適に感じる限りそれを取る、それで十分です. あなたも試すことができます:
- HTMLやXMLの解析(現実世界では、HTMLのような非正規言語を解析するために正規表現を使用することで決して確実に理解できるとは限らないため、推奨されません。さらにXMLの解析は上級レベルのユーザーに適しています)
- タグを置き換える
- コメントを削除する(IE条件付きコメントを除く)
道具
ツール 正規表現を視覚化する 私にとって一番クールなものの一つです。長く複雑な正規表現に遭遇したことがある場合は、それらをそれらのツールの1つにコピーペーストするだけで、フローを明確に表示できるようになります。それ以外にも、正規表現コードをいじるために使えるツールはたくさんあります。彼らはまた、共有機能と一緒に例やチートシートを紹介します.
- Debuggex - 入力されたとおりに正規表現図を作成し、そこからStackOverflowにすばやく共有できます。.
- RegExr - これを使って正規表現をテストできます。それはまたあなたを助けるために参照、チートシートと例を得ました.
- Refiddle - 現時点では、JavaScript以外にも、Rubyおよび.NETバージョンの正規表現にも対応できます。.
正規表現のチートシート
トークン | 定義 |
[abc] | 任意の1文字a、b、またはc |
[^ abc] | a、b、c以外の任意の文字 |
[a-z] | aからzまでの文字 |
[^ a-z] | aからz以外の文字 |
[A-Z] | AからZまでの文字 |
. | 任意の1文字 |
\ s | 任意の空白文字 |
\ S | 空白以外の文字 |
\ d | 0から9までの任意の数字 |
\ D | 任意の数字以外 |
\ w | 任意の単語の文字(文字、数字、アンダースコア) |
\ W | 単語以外の文字 |
(…) | 囲まれたものすべてをキャプチャする |
(a | b) | aかbのどちらかに一致 |
ある? | 文字aが存在しないか存在しない |
a * | 文字aが欠落しているか、またはそれ以上存在している |
ある+ | 文字aが1回以上存在する |
3 | 3文字連続して登場 |
3、 | 3文字以上連続して登場 |
3,6 | 3〜6回連続して登場 |
^ | 文字列の始まり |
$ | 文字列の終わり |
\ b | 単語の境界文字が単語の最後または最初の単語の文字である場合、または文字が単語または単語以外の文字の間にある場合 |
\ B | 非単語境界 |