Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Rで始める正規表現入門

 Rで始める正規表現入門

NobuakiOshiro

August 31, 2019
Tweet

More Decks by NobuakiOshiro

Other Decks in Technology

Transcript

  1. ⾃⼰紹介 • NOB DATA株式会社 代表取締役 • ⼤城 信晃 (@doradora09) •

    データサイエンティスト • 沖縄 -> 東京 -> 福岡(3年⽬) • ヤフー -> DATUM STUDIO -> LINE Fukuoka -> NOB DATA(株) 設⽴ • DS協会九州⽀部 発起⼈ • コミュニティ運営 • Tokyo.R, fukuoka.R, 意思決定のための データ分析勉強会, PyData.Fukuoka、等 https://nobdata.co.jp/ 2
  2. 正規表現とは • 正規表現(せいきひょうげん、英: regular expression)とは、 ⽂字列の集合を⼀つの⽂字列で表現する⽅法の⼀つである。正 則表現(せいそくひょうげん)とも呼ばれ、形式⾔語理論の分 野では⽐較的こちらの訳語の⽅が使われる。まれに正規式と呼 ばれることもある。(wikipediaより) •

    正規表現の起源の⼀つとして、数学者のスティーヴン・クリー ネは1950年代に正規集合と呼ばれる独⾃の数学的表記法を⽤い、 これらの分野のモデルを記述した。 • (その後Unix系のツールへ広がり今に⾄る)
  3. 正規表現のメリット • テキスト処理で本領を発揮。スクレイピングにも使える • XML(HTML含む)の構造が崩れているデータにも適⽤出来る • さらに他の⾔語でも使えるので汎⽤的 • ed、 grep、expr、awk、Emacs、vi、lex、Perl、PHP、Python等

    • windowsやmacで動くテキストエディタにも実装されてるものも。 ※注 • いくつか⽅⾔はあるので注意。共通して使えるものを覚えておくと吉。 • 基本正規表現、拡張正規表現、Perl⾵正規表現など
  4. 正規表現で出来ること(⼀例) プログラムのif⽂や専⽤関数を使わずに以下のようなことが可能 1. 区切り⽂字変更(タブ -> カンマ) 2. HTMLタグの除去(簡易版) 3. 都道府県の抽出(簡易版)

    4. 郵便番号の抽出(7桁) 5. URL解体(簡易版) 6. Emailアドレス形式チェック(⼀致するか否か) その他にも、⽂字列のルールに基づくマッチングや置換全般
  5. Rで正規表現使うなら{stringr}パッケージ • {stringi}パッケージのラッパーパッケージ • 関数名とか引数のルールが統⼀されていて使いやすい • 対象⽂字列が⼀貫して第⼀引数で、パターンが⼆番⽬ • 今回は以下のような関数を利⽤ •

    str_replace_all : ⼀致したパターンを置換 • str_extract : ⼀致したパターンを抽出 • str_match : ⼀致したパターンをグループで分割 • str_detect : ⼀致するかどうかをTRUE / FALSEで返却