正規表現を覚えよう(中級編)アークシステム株式会社 鈴⽊ 一生
正規表現を覚えよう 2前回までの復習正規表現とは、「メタ文字」と呼ばれる特殊文字と文字列の組み合わせで複数の文字列を表現し、検索やgrepの機能を強⼒にするここだけ読んでも意味がわかりませんが、今のみなさんなら、もう理解できると思います。(もし...
正規表現を覚えよう 3前回までの復習代表的なメタ文字¥t、¥n タブ、改⾏. とにかく、何でもいいから1文字+ 直前の文字を1個以上繰り返す* 直前の文字を0個以上繰り返す? 直前の文字がある、またはない(または、ものぐさ検索)^ ⾏頭$ ⾏末...
正規表現を覚えよう 4もう少し複雑なメタ文字正規表現で使用できるメタ文字はもう少し存在します。それらを解説していきましょう。[] この中のどれか(キャラクタクラス)[-] キャラクタクラスの範囲指定[^] キャラクタクラスの否定| または() ...
正規表現を覚えよう 5「[]」この中のどれか(キャラクタクラス)検索文字列:私は[男⼥⼈]です「[]」は「[]内のどれかにマッチする」を表しています。上記の例だと、「男」「⼥」「⼈」のどれかになります。
正規表現を覚えよう 6検索結果「私は男です」「私は⼥です」「私は⼈です」にヒットします。「私は犬です」にはヒットしていないのがわかりますか?
正規表現を覚えよう 7「[-]」キャラクタクラスの範囲指定検索文字列:[2-6い-え]「[2-6]」は「2から6の文字コードの範囲」を表しています。上記の例だと、「2,3,4,5,6,い,う,え」のどれかになります。
正規表現を覚えよう 8検索結果文字コードの範囲なので、ひらがなや漢字も使用できます。
正規表現を覚えよう 9「[^]」キャラクタクラスの否定検索文字列:[^2-6い-え]「[^〜]」は「〜で指定した文字以外」を表しています。上記の例だと、「2,3,4,5,6,い,う,え」以外の文字になります。
正規表現を覚えよう 10先ほどとヒットの状態が反転しているのがわかりますか?検索結果
正規表現を覚えよう 11検索文字列:私は[^⼈]です現在の検索結果では「私はです」がヒットしていません。ヒットするように検索文字列を修正してください例題
正規表現を覚えよう 12検索文字列:私は[^⼈]*です または 私は[^⼈]?です解答
正規表現を覚えよう 13検索文字列:私は. です|私は. でした「|」は「または」を表しています。「|」を使用する事で、複数の表現を並べる事ができます。「|」または
正規表現を覚えよう 14「私は〜です」または「私は〜でした」がヒットしています。検索結果
正規表現を覚えよう 15検索文字列:私は.((です)|(でした))「()」は「ひとまとまりの文字列」を表しています。「(です)|(でした)」で、「「です」または「でした」」を表します。「()」グループ化
正規表現を覚えよう 16結果は先ほどと同じですね。検索結果
正規表現を覚えよう 17その他のメタ文字その他は主に省略表現です。¥d 数字。[0-9]と同意¥D 数字以外。[^0-9]と同意¥s 空白。[ ¥t¥n]と同意¥S 空白以外。[^ ¥t¥n]と同意¥c 英数字と_。[a-zA-Z0-9_]と同...
正規表現を覚えよう 18正規表現による置換これまでの正規表現は、主に検索用でした。しかし、真に威⼒を発揮するのは実は置換を⾏う時です。では、これまで得た知識を確認する意味で、例題⽅式で⾒ていきましょう。
正規表現を覚えよう 19例題以下の文章は「ください」と「下さい」が混在しています。「ください」に統一してください。
正規表現を覚えよう 20検索文字列:下さい 置換文字列:ください簡単でしたね。って言うか、正規表現関係ないですね。解答
正規表現を覚えよう 21例題以下の文章に、メールで引用したかのように、⾏頭に「> 」を付与してください。
正規表現を覚えよう 22検索文字列:^ 置換文字列:>「^」や「$」は場所を意味しますが、それを置換する事によって、⾏頭や⾏末に文字を挿⼊する事ができます。解答
正規表現を覚えよう 23例題以下のクレジットカード番号を、「*」でマスクしてください。
正規表現を覚えよう 24検索文字列:¥d 置換文字列:*ここまでは楽勝ですね。では次は?解答
正規表現を覚えよう 25問題以下の全ての単語を「"」で囲んでください。ただし、置換できるのは1回だけ。
正規表現を覚えよう 26正規表現は複数のパターンを表現するので、異なる文字列を置換する時は注意が必要です。例えば、こうやって置換しようとすると・・・検索文字列:.*置換文字列:""大失敗ですね。では、どうするか?正規表現の置換
正規表現を覚えよう 27「()」キャプチャこうします。検索文字列:(.+)置換文字列:"¥1"グループ化したパターンは、先頭からそれぞれ番号が振られます。振られた番号は置換文字列で利用する事ができます。これを「キャプチャ」といいます。※注意 キ...
正規表現を覚えよう 28キャプチャの応用以下の日付を「YYYY-MM-DD」形式にしてください。
正規表現を覚えよう 29キャプチャの応用検索文字列:(¥d{4}).?(¥d{2}).?(¥d{2})置換文字列:¥1-¥2-¥3
正規表現を覚えよう 30問題以下の日付を「MM-DD-YY」形式にしてください。
正規表現を覚えよう 31検索文字列:(¥d{2})(¥d{2})(¥d{2})(¥d{2})置換文字列:¥3-¥4-¥2ね、便利でしょう?解答
正規表現を覚えよう 32問題以下の文章中のJavaをPHPに置き換えてください。ただし、JavaScriptはそのままで。
正規表現を覚えよう 33よくやる失敗後ろにSがないJavaを表すつもりで、こうすると・・・検索文字列:Java[^S] 置換文字列:PHP余計なところまで置換されてしまいました。(「で」が消えてる・・)
正規表現を覚えよう 34前後読みでは、どうするかと言えば・・・検索文字列:Java(?!S) 置換文字列:PHPほら、できました。
正規表現を覚えよう 35前後読み正規表現では、「〜に続いて・・・」や、「・・・の前の〜」と言う表現をすることができます。これを「前後読み」とか「先読み」「戻り読み」と言います。検索するときにはあまり使いませんが、置換するときにはかなり便利です。...
正規表現を覚えよう 36前後読み前後読みは^や$と同様、場所を示します。例えば、先ほどの例題で次のようにすると・・・検索文字列:(?=Java) 置換文字列:★
正規表現を覚えよう 37前後読みこうなります。右側に「Java」がある場所を「★」に置換しているのがわかりますか?
正規表現を覚えよう 38問題以下の文章の宿泊地を「奈良」に置換してください。「東京都」を「東奈良」に置換してはいけませんよ。
正規表現を覚えよう 39検索文字列:(?<!東)京都 置換文字列:奈良解答
正規表現を覚えよう 40最後に以上で正規表現の中級編は終わりです。前後読みまで使いこなすには、時間がかかると思いますが、使っていかないと、いつまでたっても身につきません。どんどん使ってみてください。いつの間にか、エディタに「正規表現」のオプショ...
Upcoming SlideShare
Loading in...5
×

正規表現を覚えよう(中級編)

750

Published on

正規表現テキストの中級編。
初級編から見ないとわからないと思います。
ちなみに、上級編を作る予定はありません。

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
750
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
10
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

正規表現を覚えよう(中級編)

  1. 1. 正規表現を覚えよう(中級編)アークシステム株式会社 鈴⽊ 一生
  2. 2. 正規表現を覚えよう 2前回までの復習正規表現とは、「メタ文字」と呼ばれる特殊文字と文字列の組み合わせで複数の文字列を表現し、検索やgrepの機能を強⼒にするここだけ読んでも意味がわかりませんが、今のみなさんなら、もう理解できると思います。(もしわからなければ、初級編を読みましょう)
  3. 3. 正規表現を覚えよう 3前回までの復習代表的なメタ文字¥t、¥n タブ、改⾏. とにかく、何でもいいから1文字+ 直前の文字を1個以上繰り返す* 直前の文字を0個以上繰り返す? 直前の文字がある、またはない(または、ものぐさ検索)^ ⾏頭$ ⾏末¥ エスケープシーケンス{n,m} 繰り返し数の指定
  4. 4. 正規表現を覚えよう 4もう少し複雑なメタ文字正規表現で使用できるメタ文字はもう少し存在します。それらを解説していきましょう。[] この中のどれか(キャラクタクラス)[-] キャラクタクラスの範囲指定[^] キャラクタクラスの否定| または() グループ化
  5. 5. 正規表現を覚えよう 5「[]」この中のどれか(キャラクタクラス)検索文字列:私は[男⼥⼈]です「[]」は「[]内のどれかにマッチする」を表しています。上記の例だと、「男」「⼥」「⼈」のどれかになります。
  6. 6. 正規表現を覚えよう 6検索結果「私は男です」「私は⼥です」「私は⼈です」にヒットします。「私は犬です」にはヒットしていないのがわかりますか?
  7. 7. 正規表現を覚えよう 7「[-]」キャラクタクラスの範囲指定検索文字列:[2-6い-え]「[2-6]」は「2から6の文字コードの範囲」を表しています。上記の例だと、「2,3,4,5,6,い,う,え」のどれかになります。
  8. 8. 正規表現を覚えよう 8検索結果文字コードの範囲なので、ひらがなや漢字も使用できます。
  9. 9. 正規表現を覚えよう 9「[^]」キャラクタクラスの否定検索文字列:[^2-6い-え]「[^〜]」は「〜で指定した文字以外」を表しています。上記の例だと、「2,3,4,5,6,い,う,え」以外の文字になります。
  10. 10. 正規表現を覚えよう 10先ほどとヒットの状態が反転しているのがわかりますか?検索結果
  11. 11. 正規表現を覚えよう 11検索文字列:私は[^⼈]です現在の検索結果では「私はです」がヒットしていません。ヒットするように検索文字列を修正してください例題
  12. 12. 正規表現を覚えよう 12検索文字列:私は[^⼈]*です または 私は[^⼈]?です解答
  13. 13. 正規表現を覚えよう 13検索文字列:私は. です|私は. でした「|」は「または」を表しています。「|」を使用する事で、複数の表現を並べる事ができます。「|」または
  14. 14. 正規表現を覚えよう 14「私は〜です」または「私は〜でした」がヒットしています。検索結果
  15. 15. 正規表現を覚えよう 15検索文字列:私は.((です)|(でした))「()」は「ひとまとまりの文字列」を表しています。「(です)|(でした)」で、「「です」または「でした」」を表します。「()」グループ化
  16. 16. 正規表現を覚えよう 16結果は先ほどと同じですね。検索結果
  17. 17. 正規表現を覚えよう 17その他のメタ文字その他は主に省略表現です。¥d 数字。[0-9]と同意¥D 数字以外。[^0-9]と同意¥s 空白。[ ¥t¥n]と同意¥S 空白以外。[^ ¥t¥n]と同意¥c 英数字と_。[a-zA-Z0-9_]と同意。¥C ¥c以外¥i 英字と_。[a-zA-Z_]と同意。¥I ¥i以外ここまでの知識で、ほとんどの正規表現は(たぶん)読めます。
  18. 18. 正規表現を覚えよう 18正規表現による置換これまでの正規表現は、主に検索用でした。しかし、真に威⼒を発揮するのは実は置換を⾏う時です。では、これまで得た知識を確認する意味で、例題⽅式で⾒ていきましょう。
  19. 19. 正規表現を覚えよう 19例題以下の文章は「ください」と「下さい」が混在しています。「ください」に統一してください。
  20. 20. 正規表現を覚えよう 20検索文字列:下さい 置換文字列:ください簡単でしたね。って言うか、正規表現関係ないですね。解答
  21. 21. 正規表現を覚えよう 21例題以下の文章に、メールで引用したかのように、⾏頭に「> 」を付与してください。
  22. 22. 正規表現を覚えよう 22検索文字列:^ 置換文字列:>「^」や「$」は場所を意味しますが、それを置換する事によって、⾏頭や⾏末に文字を挿⼊する事ができます。解答
  23. 23. 正規表現を覚えよう 23例題以下のクレジットカード番号を、「*」でマスクしてください。
  24. 24. 正規表現を覚えよう 24検索文字列:¥d 置換文字列:*ここまでは楽勝ですね。では次は?解答
  25. 25. 正規表現を覚えよう 25問題以下の全ての単語を「"」で囲んでください。ただし、置換できるのは1回だけ。
  26. 26. 正規表現を覚えよう 26正規表現は複数のパターンを表現するので、異なる文字列を置換する時は注意が必要です。例えば、こうやって置換しようとすると・・・検索文字列:.*置換文字列:""大失敗ですね。では、どうするか?正規表現の置換
  27. 27. 正規表現を覚えよう 27「()」キャプチャこうします。検索文字列:(.+)置換文字列:"¥1"グループ化したパターンは、先頭からそれぞれ番号が振られます。振られた番号は置換文字列で利用する事ができます。これを「キャプチャ」といいます。※注意 キャプチャの表現の仕⽅は処理系により異なります。(¥1は秀丸の場合)
  28. 28. 正規表現を覚えよう 28キャプチャの応用以下の日付を「YYYY-MM-DD」形式にしてください。
  29. 29. 正規表現を覚えよう 29キャプチャの応用検索文字列:(¥d{4}).?(¥d{2}).?(¥d{2})置換文字列:¥1-¥2-¥3
  30. 30. 正規表現を覚えよう 30問題以下の日付を「MM-DD-YY」形式にしてください。
  31. 31. 正規表現を覚えよう 31検索文字列:(¥d{2})(¥d{2})(¥d{2})(¥d{2})置換文字列:¥3-¥4-¥2ね、便利でしょう?解答
  32. 32. 正規表現を覚えよう 32問題以下の文章中のJavaをPHPに置き換えてください。ただし、JavaScriptはそのままで。
  33. 33. 正規表現を覚えよう 33よくやる失敗後ろにSがないJavaを表すつもりで、こうすると・・・検索文字列:Java[^S] 置換文字列:PHP余計なところまで置換されてしまいました。(「で」が消えてる・・)
  34. 34. 正規表現を覚えよう 34前後読みでは、どうするかと言えば・・・検索文字列:Java(?!S) 置換文字列:PHPほら、できました。
  35. 35. 正規表現を覚えよう 35前後読み正規表現では、「〜に続いて・・・」や、「・・・の前の〜」と言う表現をすることができます。これを「前後読み」とか「先読み」「戻り読み」と言います。検索するときにはあまり使いませんが、置換するときにはかなり便利です。前後読みには、以下の4つがあります。肯定戻り読み (?<=…) 左側に…が存在する箇所否定戻り読み (?<!…) 左側に…が存在しない箇所肯定先読み (?=…) 右側に…が存在する箇所否定先読み (?!…) 右側に…が存在しない箇所※注意 戻り読みは処理系によってはサポートされません
  36. 36. 正規表現を覚えよう 36前後読み前後読みは^や$と同様、場所を示します。例えば、先ほどの例題で次のようにすると・・・検索文字列:(?=Java) 置換文字列:★
  37. 37. 正規表現を覚えよう 37前後読みこうなります。右側に「Java」がある場所を「★」に置換しているのがわかりますか?
  38. 38. 正規表現を覚えよう 38問題以下の文章の宿泊地を「奈良」に置換してください。「東京都」を「東奈良」に置換してはいけませんよ。
  39. 39. 正規表現を覚えよう 39検索文字列:(?<!東)京都 置換文字列:奈良解答
  40. 40. 正規表現を覚えよう 40最後に以上で正規表現の中級編は終わりです。前後読みまで使いこなすには、時間がかかると思いますが、使っていかないと、いつまでたっても身につきません。どんどん使ってみてください。いつの間にか、エディタに「正規表現」のオプションがないと、イラっとするようになりますよ。
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×