Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Rで始める正規表現入門
Search
NobuakiOshiro
PRO
August 31, 2019
Technology
0
600
Rで始める正規表現入門
NobuakiOshiro
PRO
August 31, 2019
Tweet
Share
More Decks by NobuakiOshiro
See All by NobuakiOshiro
20251122_第1回ローカルLLMなんでも勉強会_オープニングトーク
doradora09
PRO
0
95
20251122_LT_スマホ版軽量ローカルLLMで人物名マスク
doradora09
PRO
0
84
20251120_生成AI(LLM)で自習する方法とバイブコーディング入門
doradora09
PRO
0
13
20251025_LT_catgpt_atlasでわかるOpenAI歴
doradora09
PRO
0
40
20251015_LT_BIのAIがAGI過渡期は流行るのではと思った話
doradora09
PRO
0
14
20251015_第4回_GenAIアナリティクス勉強会at東京_オープニングトーク
doradora09
PRO
0
4
20251011_第75回ChatGPT部_オープニングトーク_v1.00
doradora09
PRO
0
57
20250910_生成AIでスタンドアロンなデータ分析ダッシュボードを作りたい
doradora09
PRO
0
30
20250906_“GPT-5、Cerebras、 あとgpt-oss-120bの話” をしようと思ったら Qwen3-480Bがつよつよだっ た話(テトリスで検証)
doradora09
PRO
0
100
Other Decks in Technology
See All in Technology
確実に伝えるHealth通知 〜半自動システムでほどよく漏れなく / JAWS-UG 神戸 #9 神戸へようこそ!LT会
genda
0
150
AIで加速する次世代のBill Oneアーキテクチャ〜成長の先にある軌道修正〜
sansantech
PRO
1
140
都市スケールAR制作で気をつけること
segur
0
200
スタートアップの事業成長を支えるアーキテクチャとエンジニアリング
doragt
1
8.8k
"なるべくスケジューリングしない" を実現する "PreferNoSchedule" taint
superbrothers
0
110
"'TSのAPI型安全”の対価は誰が払う?不公平なスキーマ駆動に終止符を打つハイブリッド戦略
hal_spidernight
0
180
クラスタ統合リアーキテクチャ全貌~1,000万ユーザーのウェルネスSaaSを再設計~
hacomono
PRO
0
200
学術的根拠から読み解くNotebookLMの音声活用法
shukob
0
490
GitHub を組織的に使いこなすために ソニーが実践した全社展開のプラクティス
sony
6
3.7k
Eight Engineering Unit 紹介資料
sansan33
PRO
0
5.6k
変わるもの、変わらないもの :OSSアーキテクチャで実現する持続可能なシステム
gree_tech
PRO
0
1k
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
5
45k
Featured
See All Featured
Large-scale JavaScript Application Architecture
addyosmani
514
110k
How to Ace a Technical Interview
jacobian
280
24k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Site-Speed That Sticks
csswizardry
13
970
Scaling GitHub
holman
464
140k
How to Think Like a Performance Engineer
csswizardry
28
2.3k
GraphQLとの向き合い方2022年版
quramy
49
14k
We Have a Design System, Now What?
morganepeng
54
7.9k
Faster Mobile Websites
deanohume
310
31k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.8k
Raft: Consensus for Rubyists
vanstee
140
7.2k
Making the Leap to Tech Lead
cromwellryan
135
9.6k
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 !