Learning regular expression

1,063 views
996 views

Published on

制作会社に勤める人向け「はじめての正規表現」
http://d.hatena.ne.jp/jdg/20080921/1222002244

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,063
On SlideShare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
16
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Learning regular expression

  1. 1. はじめての正規表現
  2. 2. 今回、勉強会を 開催するにあたり
  3. 3. 次のような 事前アンケートを 取りました
  4. 4. 「テキスト処理をしている中で、 手作業でやるのが面倒な事例を 教えてください。 例題としてとりあげるので、 メールかSkypeで受け付けます。」
  5. 5. まずは、 そのアンケートについて 一通ずつ紹介します
  6. 6. では、気を取り直して 基本事項の確認
  7. 7. 記号の意味を 理解しましょう
  8. 8. .(ピリオド) 任意の一文字(改行以外)を表す これ
  9. 9. *(アスタリスク) 直前の文字を0回以上繰り返す
  10. 10. これ + .*(ピリオド&アスタリスク) 任意の一文字を0回以上繰り返す
  11. 11. これがワイルドカード文字の *(アスタリスク)に相当します
  12. 12. ワイルドカードの『*』 =(イコール) 正規表現の『.*』
  13. 13. あといくつか覚えれば 大体おk
  14. 14. ¥n(改行) ¥t(タブ) ^(行頭) $(行末) (A¦B)(AまたはB)
  15. 15. 習うより慣れろ!
  16. 16. 行頭に「> 」の引用符を 挿入したい
  17. 17. HTMLメールに対して テキストメールで返信する時など 引用符(> )が欲しくなる時があります 行頭に引用符を挿入したい そんな時に使えます
  18. 18. 検索する文字列 『^』 置換する文字列 『> 』 半角空白
  19. 19. 番組の途中ですが、お知らせです
  20. 20. 秀丸エディタにある 正規表現機能の使い方を ご紹介します
  21. 21. メニューバーの「検索」→「置換」を クリックします
  22. 22. 正規表現のチェックボックスを オンにします 「初めてだから怖い・・・」という方は 痴漢の前に確認しておきましょう
  23. 23. 話を元に戻します
  24. 24. 検索する文字列 『^』 置換する文字列 『> 』 半角空白
  25. 25. 解説
  26. 26. 行頭(^)を 引用符(> )に置換したということ
  27. 27. 行末の不要な空白を 除去したい
  28. 28. Excelなどのファイルから 文字列をコピーした時 行末に不要な空白があることがあります 行末の不要な空白を除去したい そんな時に使えます
  29. 29. 検索する文字列 『 $』 置換する文字列 『』 半角空白
  30. 30. 解説
  31. 31. 行末($)直前の空白を 「何もなし」に置換したということ
  32. 32. 行末に<br />を 挿入したい
  33. 33. HTMLでは改行を<br />と表します 原稿の行末に<br />を挿入したい そんな時に使えます
  34. 34. 検索する文字列 『$』 置換する文字列 『<br />』
  35. 35. 解説
  36. 36. 行末($)を <br />に置換したということ
  37. 37. バラバラになっている 表記ゆれを統一したい
  38. 38. 複数人がライティング作業をする時など 表記ルールを決めてない限り 表記ゆれが絶対おこります 表記ゆれを統一したい そんな時に使えます
  39. 39. 検索する文字列 『(ウェブ¦ウエブ)』 置換する文字列 『Web』
  40. 40. 解説
  41. 41. ウェブまたは、ウエブを Webに統一したということ
  42. 42. 行頭の 不要な空白やタブを 除去したい
  43. 43. 人からもらったHTMLファイルなど 「インデントのタイミングが気持ち悪い」 「タブと空白入り交じってやがる!」 など、イラっとすることがありますね すべてのインデントをリセットしたい そんな時に使えます
  44. 44. 検索する文字列 『^( ¦ ¦¥t)*』 置換する文字列 『』
  45. 45. 解説
  46. 46. 行頭(^)の 半角空白、または全角空白、またはタブ(¥t)が いくつ出てきたとしても(*) 「何もなし」に置換したということ
  47. 47. 延々続く文字列を 30文字で折り返したい
  48. 48. メールを送る時なんかに 30字で改行すると見やすくなりますね 書き終わってから30字に強制改行したい そんな時に使えます
  49. 49. 検索する文字列 『(..............................)』 置換する文字列 『¥1¥n』ピリオド30個
  50. 50. 解説
  51. 51. 解説の前に、 今使った 新しい概念の説明です
  52. 52. 検索する文字列 『(..............................)』 置換する文字列 『¥1¥n』
  53. 53. 検索する文字列 『(..............................)』 この検索する文字列のように、 カッコでグループ化した文字は
  54. 54. 置換する文字列 『¥1¥n』 後から、¥1という表記で 呼び出すことができます
  55. 55. 置換する文字列 『¥1¥n』 この置換する文字列で言う¥1は 『..............................』 と同じ意味になります
  56. 56. つまり、 置換する文字列 『¥1¥n』 は 『..............................¥n』 とあらわしていることになります
  57. 57. 検索する文字列 『(...............)(...............)』 カッコのグループが2つあれば ピリオド15個
  58. 58. 置換する文字列 『¥1¥2¥n』 後から、¥1と¥2という表記で 別々に呼び出すことができます
  59. 59. 解説に戻ります
  60. 60. 検索する文字列 『(..............................)』 置換する文字列 『¥1¥n』
  61. 61. 任意の文字(.)が30個続いたら、 改行(¥n)を挟むということ
  62. 62. もうちょっと簡潔な表現で
  63. 63. 検索する文字列 『(.{30})』 置換する文字列 『¥1¥n』
  64. 64. と表すことも可能です
  65. 65. <meta>や<img>を <meta />や<img />に 変換したい
  66. 66. HTMLからXHTMLに移行する時 空要素の末尾に「 /」が必要です 意外に多くてめんどくさい 空要素の末尾すべてに「 /」を挿入したい そんな時に使えます
  67. 67. 検索する文字列 『(<(meta¦link¦br¦img¦hr¦ input).*?)>』 置換する文字列 『¥1 />』 よく使う空要素のみ抜粋
  68. 68. 解説
  69. 69. 解説の前に、 今使った 新しい概念の説明です
  70. 70. 説明のために シンプルな記述に変更します
  71. 71. 検索する文字列 『(<img.*?)>』 置換する文字列 『¥1 />』
  72. 72. 検索する文字列 『(<img.*?)>』 ?が今回のポイントです
  73. 73. 検索する文字列 『(<img.*?)>』 この?がないとどうなるかというと
  74. 74. <p><img src= example.jpg alt= いぐざんぽー ></p> 外側に別の要素があると 赤字の範囲がマッチ対象になります
  75. 75. <p><img src= example.jpg alt= いぐざんぽー ></p> 本当はここまでで止めてほしい
  76. 76. 検索する文字列 『(<img.*?)>』 ?を使うと最短距離で マッチしてくれます
  77. 77. 『(<img.*)>』 ?がなければ最長距離の「>」まで <p><img src= example.jpg alt= いぐざんぽー ></p>
  78. 78. 『(<img.*?)>』 ?があれば最短距離の「>」まで <p><img src= example.jpg alt= いぐざんぽー ></p>
  79. 79. というように マッチ対象が変わります
  80. 80. 解説に戻ります
  81. 81. 検索する文字列 『(<(meta¦link¦br¦img¦hr¦ input).*?)>』 置換する文字列 『¥1 />』 よく使う空要素のみ抜粋
  82. 82. 「<」があって、 metaまたは、linkまたは・・・があって 任意の文字がいくつかあって(.*) 最短距離の「>」までを <なんとか />にするということ
  83. 83. 相対パスを絶対パスに 変更したい
  84. 84. 相対パスより絶対パスの方が SEOに効果があるという噂がありますね 相対パスを絶対パスに変更したい そんな時に使えます
  85. 85. 検索する文字列 『(<a href=")』 置換する文字列 『¥1http://www.example.com/』
  86. 86. 最後に
  87. 87. にわか正規表現は危険なので 慣れないうちは 用法・容量を守って 正しくお使いください
  88. 88. がんばって 習得しましょう!
  89. 89. お疲れ様でした!

×