Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Rで始める正規表現入門
NobuakiOshiro
August 31, 2019
Technology
0
330
Rで始める正規表現入門
NobuakiOshiro
August 31, 2019
Tweet
Share
More Decks by NobuakiOshiro
See All by NobuakiOshiro
20220718_tokyor_100回記念の発表_初代運営OBが分析者コミュニティTokyo.Rを振り返る
doradora09
1
54
20210715_第14回意思決定のための_意思決定プロセスと分析技術を俯瞰してみる
doradora09
0
39
20210410_オン飲み研究会_キックオフ
doradora09
0
39
第101回 大連ITクラブ〜地方にも広がる日本国内のAI・データサイエンスへの取り組みと、落とし穴〜(42p)
doradora09
1
62
20210211_AI・データ分析プロジェクトのすべて(pydata.fukuoka向け)
doradora09
0
87
20210126_AI・データ分析プロジェクトのすべて_ビジネスxテクノロジー=価値創出(パーソルさん向け)
doradora09
1
89
20210115_意思決定勉強会_データドリブンな組織文化醸成のための、AI・データ分析PJ立ち上げのススメ
doradora09
0
210
20210113_AI・データ分析プロジェクトのすべて_ビジネスxテクノロジー=価値創出(みんなのPython勉強会向け)
doradora09
0
330
20210114_OPEN G's #06 プログラミング初心者が陥る AIについての誤解とは? 〜データを活用したサービス開発〜【入門編】(OPEN Gs福岡セミナー)
doradora09
0
54
Other Decks in Technology
See All in Technology
大声で伝えたい!定時に帰る方法
sbtechnight
0
240
私のAWS愛を聞け!ここが好きだよAmazon FSx for NetApp ONTAP
non97
0
770
JAWS-UG 朝会 #36 登壇資料
takakuni
1
560
AWSを使う上で意識しておきたい、クラウドセキュリティ超入門(駆け足版)
kkmory
0
190
年700万円損するサーバレスの 認可システムをご紹介します!!
higuuu
3
340
Azure DevOps Online Vol.6 - 業務で必要なCIをみんなで考えよう
kkamegawa
0
270
プロダクトマネージャーの役割と育成、評価
middleokada
16
11k
20220731 如何跟隨開源技術保持你的職涯發展
pichuang
0
120
ここが好きだよAWS管理ポリシー_devio2022/i_am_iam_lover
yukihirochiba
0
3.2k
EC/CRMの自社サービス開発をマネジメントするようになって1年でやってきたこととこれから / devio2022-takano-sho-road-to-good-development-team-management
masaru_b_cl
0
430
cobra は便利になっている
nwiizo
0
140
SPAとWebアプリケーションでCognitoの使い方はどう変わるのか? / How do we use cognito with SPA and web applications?
kitano_yuichi
0
400
Featured
See All Featured
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
107
16k
Statistics for Hackers
jakevdp
782
210k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
498
130k
Large-scale JavaScript Application Architecture
addyosmani
499
110k
Done Done
chrislema
174
14k
Why Our Code Smells
bkeepers
PRO
324
55k
How GitHub (no longer) Works
holman
297
140k
VelocityConf: Rendering Performance Case Studies
addyosmani
316
22k
Pencils Down: Stop Designing & Start Developing
hursman
113
9.8k
Making the Leap to Tech Lead
cromwellryan
113
7.4k
Designing for humans not robots
tammielis
241
24k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
269
12k
Transcript
LT Rで始める 正規表現⼊⾨ fukuoka.R #15 2019/08/31 @doradora09
⾃⼰紹介 • NOB DATA株式会社 代表取締役 • ⼤城 信晃 (@doradora09) •
データサイエンティスト • 沖縄 -> 東京 -> 福岡(3年⽬) • ヤフー -> DATUM STUDIO -> LINE Fukuoka -> NOB DATA(株) 設⽴ • DS協会九州⽀部 発起⼈ • コミュニティ運営 • Tokyo.R, fukuoka.R, 意思決定のための データ分析勉強会, PyData.Fukuoka、等 https://nobdata.co.jp/ 2
None
[RP] DS協会九州⽀部設⽴ • 次回は9/20のセミナーを調整中 • 個⼈・法⼈会員も募集中です・・!
モチベーション • たまにWebクロール & スクレイピン グのハンズオンなどをやっているが その後のデータ加⼯で皆苦戦してい る節がある • 「正規表現」という便利なものがあ
るよ、という紹介
こういうケースとか • Xpathで住所データをスクレイピングしたものの、 前後に改⾏とスペースが⼤量にある、など str_replace_all(pattern = "[\n ]+", replacement =
'') => 改⾏と半⾓スペースを除去し、データを綺麗に。
正規表現とは • 正規表現(せいきひょうげん、英: regular expression)とは、 ⽂字列の集合を⼀つの⽂字列で表現する⽅法の⼀つである。正 則表現(せいそくひょうげん)とも呼ばれ、形式⾔語理論の分 野では⽐較的こちらの訳語の⽅が使われる。まれに正規式と呼 ばれることもある。(wikipediaより) •
正規表現の起源の⼀つとして、数学者のスティーヴン・クリー ネは1950年代に正規集合と呼ばれる独⾃の数学的表記法を⽤い、 これらの分野のモデルを記述した。 • (その後Unix系のツールへ広がり今に⾄る)
正規表現のメリット • テキスト処理で本領を発揮。スクレイピングにも使える • XML(HTML含む)の構造が崩れているデータにも適⽤出来る • さらに他の⾔語でも使えるので汎⽤的 • ed、 grep、expr、awk、Emacs、vi、lex、Perl、PHP、Python等
• windowsやmacで動くテキストエディタにも実装されてるものも。 ※注 • いくつか⽅⾔はあるので注意。共通して使えるものを覚えておくと吉。 • 基本正規表現、拡張正規表現、Perl⾵正規表現など
正規表現で出来ること(⼀例) プログラムのif⽂や専⽤関数を使わずに以下のようなことが可能 1. 区切り⽂字変更(タブ -> カンマ) 2. HTMLタグの除去(簡易版) 3. 都道府県の抽出(簡易版)
4. 郵便番号の抽出(7桁) 5. URL解体(簡易版) 6. Emailアドレス形式チェック(⼀致するか否か) その他にも、⽂字列のルールに基づくマッチングや置換全般
Rで正規表現使うなら{stringr}パッケージ • {stringi}パッケージのラッパーパッケージ • 関数名とか引数のルールが統⼀されていて使いやすい • 対象⽂字列が⼀貫して第⼀引数で、パターンが⼆番⽬ • 今回は以下のような関数を利⽤ •
str_replace_all : ⼀致したパターンを置換 • str_extract : ⼀致したパターンを抽出 • str_match : ⼀致したパターンをグループで分割 • str_detect : ⼀致するかどうかをTRUE / FALSEで返却
R上で正規表現を試してみる ①区切り⽂字変更(タブ -> カンマ) \tがタブを表す パターン例 : \t
ご参考 : 正規表現で定義されているもの(抜粋) https://murashun.jp/blog/20190215-01.html
R上で正規表現を試してみる ②HTMLタグの除去(簡易版) <で始まり、 任意の⽂字列(.*?)が続き、 かつ>で終わるもの、 にマッチ 置換⽂字列を空⽂字にする ことで削除と同じ効果 パターン例 :
<.*?>
ご参考 : ⽂字列系のメタ⽂字(抜粋) https://murashun.jp/blog/20190215-01.html
R上で正規表現を試してみる ③都道府県の抽出(簡易版) スペース以外の⽂字([^ ])が、 2⽂字から3⽂字続き{2,3}?、 かつ都道府県のいずれかが続く パターンにマッチ ※[]の中の^は否定を表す。 ⾏頭を⽰す^とは別の意味な ので注意
パターン例 : ([^ ]{2,3}?[都道府県])
R上で正規表現を試してみる ④郵便番号の抽出(7桁) 〒で始まり、 数字3⽂字(\\d{3})、 ついでハイフン、 ついで数字4⽂字(\\d{4}) のパターンにマッチ ※Rの正規表現の場合はバッ クスラッシュを書く場合は2 つ必要
パターン例 : 〒\\d{3}-\\d{4}
ご参考 : 繰り返しや否定のメタ⽂字 https://murashun.jp/blog/20190215-01.html
R上で正規表現を試してみる ⑤URL解体(簡易版) ()でそれぞれグループ化したもの が分割されて後から取り出せる (後⽅参照) パターン例 : ^(.+?)://(.+?):?(\\d+)?(/.*)?$
R上で正規表現を試してみる ⑥Emailアドレス形式チェック(⼀致するか否か) パターンに⼀致する場合は TRUEを返却 不⼀致の場合は FALSEを返却 @マークが2ある変 なアドレスを指定し た場合 パターン例
: ^[A-Za-z0-9._+]+@[A-Za-z]+.[A-Za-z]+$
ご参考 : 連続した⽂字の省略記法(抜粋) https://murashun.jp/blog/20190215-01.html
補⾜ : ちなみに、 正規表現は他のツール・⾔語でも使える • macならmiエディタ、winならnoeditorやサクラエディタなど • linuxならvimでも使える(タブ表記などは⽅⾔あり) http://example.com:80/test/index.php example.com
まとめ • テキスト処理を⾏うなら正規表現が便利 • Rで使うなら{stringr}パッケージなど • 他のエディタや⾔語でも使えるので拡張正規表現あたりは覚え ておくと役に⽴つかも
Enjoy !