YouTube

Got a YouTube account?

New: enable viewer-created translations and captions on your YouTube channel!

Japanese subtitles

← 02-27 Strip Snipping

dummy description

Get Embed Code
3 Languages

Showing Revision 1 created 10/23/2014 by Udacity.

  1. “”がついた文字列を扱うと
  2. 重複が見られることにお気づきでしたか?
  3. 合致した文字はすべて返されますので
  4. “”も含まれています
  5. この記号自体に意味があるわけではなく
  6. 文字列の始まりと終わりを知らせてくれます
  7. デフォルトのトークン値は
  8. この部分ですがハサミで不要な部分を切るように
  9. 最初と最後に付いた“”を取ってしまいましょう
  10. このハサミを使い変更できる
  11. トークン定義の例を書き出しました
  12. まず文字列を合致させます
  13. そのあと合致した文字列の
  14. トークンの値を抜き出します
  15. そして部分文字列の選択をします
  16. 最初の文字を1として始めます
  17. そして文字-1まで進みますが
  18. 文字-1は含みません
  19. Pythonに詳しい人はご存知だと思いますが
  20. Pythonでは負の数を使って
  21. 文字列の終わりから数えることができます
  22. この部分が-1として始まるのです
  23. 部分文字列に含まれるのは
  24. 最初の文字である文字1から
    文字-1と認識される”の前までです
  25. この文字列の場合qから始まり
  26. 最後のsまでが含まれます
  27. まさに私たちが求めていた結果です
  28. 使える技ですよね
  29. ではこれから字句解析プログラムの作り方を
  30. 皆さんにお見せしましょう
  31. 字句解析プログラムとはトークンの定義を
    まとめたものです
  32. Pythonを使って
  33. 説明をしていきます
  34. 1行目にあるimportステートメントは
    import reと似ていて
  35. 字句解析ソフトウェアやライブラリが
    どこにあるのかを
  36. Pythonに知らせています
  37. 正規表現がreと省略されているように
  38. 字句解析プログラムにはlexと入力します
  39. このあとは入れたいトークンを
    リストにしていきます
  40. 先ほど説明をした6個を書き出しました
  41. LANGLEは<、LANGLESLASHは</、
    RANGLEは>
  42. これら3つはタグに必要な記号です
  43. EQUALは=、
    STRINGは“”で囲まれた文字列を表します
  44. それ以外の単語はWORDです
  45. ショートカットを利用しましょう
  46. ホワイトスペースのトークンを書く代わりに
  47. t_ignoreを使ってください
  48. 間接的にこの正規表現に合致するものを
    すべて無視します
  49. 最初のトークン定義のルールは
  50. </についてです
  51. これが合致する正規表現で
  52. テキストは変えずに返します
  53. 次は<のルールです
  54. 合致する正規表現はこれで
    テキストは変えず返します
  55. </を先に持ってきたのには
  56. 理由があります
  57. その理由は</を優先させたいからです
  58. </と<が同時に来た時
  59. <のあとに言葉が続くものよりも
  60. </を先に持っていきたいのです
  61. これについてはあとで説明します
  62. >のルールを書きました
  63. これが=のトークンルールです
  64. 長いリストになりましたが
  65. 内容はそんなに複雑ではありません
  66. 5つの正規表現をリストアップしただけです
  67. 次は少し複雑になります
  68. 文字列のルールを入れていきます
  69. これが合致する正規表現になります
  70. そしてトークン値を囲んでいる“”を
  71. 切り取る技を入れました
  72. 先ほどお見せしましたね
  73. 最後に単語のルールを入れます
  74. 今入れた正規表現や
  75. トークンの定義を使い
  76. Webページを分割してみます
  77. ではまず仮想のWebページ用に
    このような変数を入れましょう
  78. “This is <b>my</b> webpage”
  79. !を加えて楽しさを10%ほどアップさせましょう
  80. この関数は字句解析ライブラリに
  81. 字句解析プログラムを作り文字列を分割する際に
  82. 上のトークン定義をすべて使いたいと示しています
  83. 次に分割する文字列を指定します
  84. 分割したいWebページはこれです
  85. This is my webpage!
  86. 字句解析プログラムが出力するのは
  87. トークンのリストです
  88. リストからすべての要素をプリントアウトするには
  89. .tokenを使い次にあるトークンを返します
  90. もし最後のトークンまで行った場合は
  91. ループから抜け出しましょう
  92. トークンがプリントアウトされます
  93. ではどんな出力が得られるか試してみましょう
  94. 今回は最初からすべて自分で入力したので
  95. 間違いが出てくる可能性は極めて高いです
  96. 何が起こるか見てみましょう
  97. これは信じられない結果が出ました
  98. 画面下の部分に出力結果が表示されています
  99. WORDとしてT、h、i、sと分割されています
  100. 私の予想していた結果ではありません
  101. この部分に間違いを発見しました
  102. t_WORDが1文字しか持てない設定です
  103. 出力された結果を見ると
  104. Thisという単語の代わりに
  105. 1文字ずつ分割されてしまっています
  106. 修正しましょう
  107. これで予想どおりの出力結果が表示されました
  108. 最初のトークンはThis
  109. 次のトークンはisです
  110. そして次に<が返され
  111. 次に太字にするためのb
  112. そして>とmyと続き
  113. </のあとに続くのが
  114. webpage!という単語です