SlideShare una empresa de Scribd logo
1 de 58
Descargar para leer sin conexión
正規表現を覚えよう
(初級編)
アークシステム株式会社 鈴⽊ 一生
正規表現を覚えよう 2
正規表現とは
⽂字列の集合を一つの⽂字列で表現する方法の一つ
(Wikipdiaより)
正規表現を覚えよう 3
なんのこっちゃ?
正規表現を覚えよう 4
正規表現とは
「メタ⽂字」と呼ばれる特殊⽂字と
⽂字列の組み合わせで複数の⽂字列を表現し、
検索やgrepの機能を強⼒にする
正規表現を覚えよう 5
・・まだ、よくわかんね。
正規表現を覚えよう 6
例えば・・・
半角スペースやら、タブ⽂字やらが混在している名前リスト
はっきり言って、イラっとします。
正規表現を覚えよう 7
例えば・・・
このリストを「[␣□¥t]+」 → 「¥t」で置換します
※␣ :半角スペース、□全角スペース
正規表現を覚えよう 8
例えば・・・
ほら、この通り。スッキリしました。
正規表現を覚えよう 9
あいまい検索でよくね?
正規表現を覚えよう 10
正規表現なら・・・
もっと複雑な表現ができます。そう、正規表現ならね。
例えば・・・
america、America、AMERICA、アメリカ
を一度に検索する
正規表現を覚えよう 11
正規表現なら・・・
検索⽂字列:[Aa](merica|MERICA)|アメリカ
ほらね。
正規表現を覚えよう 12
別々に検索すればいいじゃん。
正規表現を覚えよう 13
じゃぁ、これは?
さっきのから、アメリカン、Americanを除いて検索。
正規表現を覚えよう 14
除いて検索?できんの?
正規表現を覚えよう 15
正規表現なら・・・
検索⽂字列:[Aa](merica|MERICA)(?![Nn])|アメリカ(?!ン)
どうです?
すごさがわかってきましたか?
でも、これは
まだまだ序の口です。
正規表現を覚えよう 16
正規表現は
正規表現⾃体は、⽂字列を表現する⼿法に過ぎませんが、
その利⽤法はかなり広いです。
私は主に、
⽂字列検索
置換による機械的な⽂字列加⼯
データ解析や加⼯
プログラムの⼊⼒チェックの実装
などに使⽤しています。
正規表現を覚えよう 17
検索や加⼯はわかるが、
解析やら⼊⼒チェックって?
正規表現を覚えよう 18
正規表現なら・・・
ある特定の⽂字列が含まれているか、いないかを元に
そのデータが正当かどうかをチェックする事ができます。
例えば・・
郵便番号の⼊⼒チェックとして、
以下のような要件があるとします。
3桁-4桁の数字で構成される
区切り⽂字は「-」のみ
正規表現を覚えよう 19
正規表現で⼊⼒チェック
テストデータはこんな感じ
これを正規表現でチェックするには・・・
正規表現を覚えよう 20
正規表現で⼊⼒チェック
検索⽂字列:^¥d{3}-¥d{4}$
この正規表現に
マッチするか否かで、
⼊⼒チェックや
データのチェックを⾏う事ができます。
正規表現を覚えよう 21
正規表現で⼊⼒チェック
通常のプログラムだと、100stepくらいの実装が
正規表現を使えば1stepで可能だったりします。
(ただし、正規表現を知らない人にはメンテできなくなりますが・・)
他にもデータ加⼯なんかは、
⾺⿅正直にやると2時間くらいかかる単純作業が
1分でできてしまったりもします。
正規表現を覚えよう 22
覚えたくなってきたでしょ?
正規表現は、非常に便利なんですが、
表現⾃体が暗号のようで分かりにくいのと、
有効性の説明が難しいため、
日本ではあまり浸透していません。
逆に言うと、これを知っていると
非常に強⼒な武器になります。
また一度覚えると、⼿放せなくなるほど便利です。
是非、覚えましょう。
正規表現を覚えよう 23
簡単なメタ⽂字
では最初に「メタ⽂字」から。
メタ⽂字は「特殊な意味を持つ⽂字」と言う意味です。
有名なものに
¥n 改⾏
¥t タブ⽂字
が、あります。
中には、これを知っているだけで
「正規表現を知っている」と言う輩がおりますが、
そう言う人を⾒かけたら、⿐で笑ってあげてください。
正規表現を覚えよう 24
「¥n」改⾏
例)検索⽂字列:です¥n
「です」で終わる⾏を検索します。
厳密には「〜ですの後ろに改⾏がある」場所を検索します。
正規表現を覚えよう 25
検索結果
「です」が⾏末でない場合、ヒットしなくなります。
正規表現を覚えよう 26
「¥t」タブ⽂字
例)検索⽂字列:¥t
「タブ⽂字」を検索します。
正規表現を覚えよう 27
代表的なメタ⽂字
次に、代表的なメタ⽂字です。
^ ⾏頭
$ ⾏末
. 何でもいいから1⽂字
+ 直前の⽂字を1個以上繰り返す
* 直前の⽂字を0個以上繰り返す
? 直前の⽂字がある、またはない(ものぐさ検索)
¥ エスケープシーケンス
{n,m} 繰り返し回数指定
だんだん、暗号っぽくなってきましたが、
ひとつずつ、解説していきましょう。
正規表現を覚えよう 28
「^」⾏頭
例)検索⽂字列:^私は
「私は」で始まる⾏を検索します。
正規表現を覚えよう 29
検索結果
「私は」が⾏頭にない場合、ヒットしなくなります。
「^」⾃体は⽂字を現すのではなく、場所を表す事になります。
正規表現を覚えよう 30
「$」⾏末
例)検索⽂字列:です$
「です」で終わる⾏を検索します。
正規表現を覚えよう 31
検索結果
「〜です」が⾏末でない場合、ヒットしなくなります。
「¥n」との違いは「改⾏⽂字を含むか含まないか」です。
正規表現を覚えよう 32
便利な使い方 その1
あるファイルの空⾏を削除したい。
無駄な空⾏がジャマなので、削除したいと思ったとき、
あなたならどうしますか?
正規表現を覚えよう 33
便利な使い方 その1
検索⽂字列:^¥n 置換⽂字列:
で、置換すると・・・
ほら、この通り。
何⾏あっても一瞬です。
この時、「^¥n」でなく
「^$」で置換すると、
改⾏⽂字が消えないため、
空⾏はなくなりません。
正規表現を覚えよう 34
「.」とにかく、何でもいいから1⽂字
例)検索⽂字列:私は.です
「私は○です」と言う⽂字列を検索します。
正規表現を覚えよう 35
検索結果
「アレ」「ママ」「パパ」は1⽂字でないのでヒットしません。
「アレ」も含めるのであれば、次のメタ⽂字を使います。
正規表現を覚えよう 36
「+」直前の⽂字を1個以上繰り返す
例)検索⽂字列:私は.+です
「私は〜です」と言う⽂字列を検索します。
正規表現を覚えよう 37
検索結果
検索⽂字を「私はマ+です」とすると、「私はママです」がヒットします。
これは「+」の直前にある「マ」を繰り返してることになります。
「私はです」は「私は」と「です」の間に1⽂字もないのでヒットしません。
「私はです」も含めるには、次のメタ⽂字を使います。
正規表現を覚えよう 38
「*」直前の⽂字を0個以上繰り返す
例)検索⽂字列:私は.*です
「私は〜です」と言う⽂字列を検索します。
正規表現を覚えよう 39
検索結果
「私はです」もヒットしました。
逆に1⽂字、または0⽂字だけをヒットしたい場合は・・・
正規表現を覚えよう 40
「?」直前の⽂字がある、またはない
例)検索⽂字列:私は.?です
「私は○です」、「私はです」を検索します。
正規表現を覚えよう 41
検索結果
「私はです」もヒットしました。
ただ正直、「?」はあんまり使いません。(たいてい、「*」で事足りる)
正規表現を覚えよう 42
「¥」エスケープシーケンス
例)検索⽂字列:0¥..+
メタ⽂字を実際に検索したい場合、「¥」でエスケープします。
上記の例では、0で始まり、⼩数点を含む⽂字列を検索します。
正規表現を覚えよう 43
検索結果
0で始まり、⼩数点を含む⾏が検索されました。
正規表現を覚えよう 44
便利な使い方 その2
あるフォルダのファイルの一覧を作りたい。
こんなフォルダがあったとします。
このファイル一覧を作る場合、あなたらならどうしますか?
正規表現を覚えよう 45
便利な使い方 その2
検索⽂字列:.*
で、「ファイル名一覧だけ作成」にチェックを⼊れてgrepすると・・・
ほら、この通り・・・あれ?
ゴミ(⾏番号)がジャマですね。
正規表現を覚えよう 46
便利な使い方 その2
じゃ、ジャマな部分は消してしまいましょう。
検索⽂字列:¥(.+¥) 置換⽂字列:
で、置換すれば・・・
ほら、ファイルの一覧ができました。
サブフォルダがあっても
簡単にできますよ!
正規表現を覚えよう 47
繰り返しの注意点
繰り返しはそのパターンが
1⾏の中で複数ヒットする場合、
その最⼤⻑の⽂字列にヒットします。
これをたまに忘れて、痛い目に合います。
正規表現を覚えよう 48
どういう意味?
正規表現を覚えよう 49
繰り返しの注意点
例えば・・・
検索⽂字列:私は.+です
で、以下のファイルを検索すると・・・
正規表現を覚えよう 50
繰り返しの注意点
こうなります。
この⾏の場合、「.+」は「男」と、「男ですが、彼⼥も男」の
2通りの解釈があります。この場合、正規表現では
解釈できるパターンの内、最も⻑い⽂字列にヒットします。
正規表現を覚えよう 51
意味は分かるけど、注意って?
正規表現を覚えよう 52
よくやる失敗
こんなCSVファイルがあります。
この中のデータを初期化しようとして、
次の様に置換すると・・・
正規表現を覚えよう 53
よくやる失敗
検索⽂字列:".+" 置換⽂字列:""
こうなってしまいます。
では、こう言う時は
どうするか?
正規表現を覚えよう 54
「?」ものぐさ検索
繰り返しを表すメタ⽂字の直後に「?」をつけると、
最も短い⽂字列にヒットします。
検索⽂字列:".+? " 置換⽂字列:""
これで、CSVファイルを
初期化できました。
正規表現を覚えよう 55
{n,m} 繰り返し回数指定
以下のようなファイルがあります。
この中で、「o」が2〜4個の⽂字列を探したいとします。
さて、どうしますか?
正規表現を覚えよう 56
{n,m}繰り返し回数指定
いくつか方法はあるんですが、最もシンプルなのはこう。
検索⽂字列:go{2,4}gle
なんとなく、分かりますよね?{n,m}で、
n個以上、m個以下の繰り返しを意味します。
正規表現を覚えよう 57
{n,m}繰り返し回数指定
n,mはそれぞれ省略する事ができます。
{n} :n個の繰り返し
{,m}:m個以下の繰り返し
{n,} :n個以上の繰り返し
検索⽂字列:go{3,}gle
正規表現を覚えよう 58
最後に
これで、初級編は終わりです。
これだけでも、だいぶ便利さが
伝わったのではないでしょうか?
ただ、正規表現を使いこなすには
もう少し踏み込んだ勉強が必要です。
興味があれば、中級編に進んでみましょう。

Más contenido relacionado

La actualidad más candente

コプト・エジプト語の他動詞の「前名詞形」の軽動詞性と文法化[The "Prenominal" Form of Verbs in Coptic Egypti...
コプト・エジプト語の他動詞の「前名詞形」の軽動詞性と文法化[The "Prenominal" Form of Verbs in Coptic Egypti...コプト・エジプト語の他動詞の「前名詞形」の軽動詞性と文法化[The "Prenominal" Form of Verbs in Coptic Egypti...
コプト・エジプト語の他動詞の「前名詞形」の軽動詞性と文法化[The "Prenominal" Form of Verbs in Coptic Egypti...So Miyagawa
 
はじめての生成文法 《後編》
はじめての生成文法 《後編》はじめての生成文法 《後編》
はじめての生成文法 《後編》Shuyo Nakatani
 
文献紹介:格フレームの対応付けに基づく用言の言い換え
文献紹介:格フレームの対応付けに基づく用言の言い換え文献紹介:格フレームの対応付けに基づく用言の言い換え
文献紹介:格フレームの対応付けに基づく用言の言い換えTomoyuki Kajiwara
 
【一級】対義語類義語1
【一級】対義語類義語1【一級】対義語類義語1
【一級】対義語類義語1hagunnzyou
 
Nl220 Pitman-Yor Hidden Semi Markov Model
Nl220 Pitman-Yor Hidden Semi Markov ModelNl220 Pitman-Yor Hidden Semi Markov Model
Nl220 Pitman-Yor Hidden Semi Markov ModelKei Uchiumi
 
Lebesgue 可測性に関する Solovay-Shelah の結果に必要な記述集合論のごく基本的な事項
Lebesgue 可測性に関する Solovay-Shelah の結果に必要な記述集合論のごく基本的な事項Lebesgue 可測性に関する Solovay-Shelah の結果に必要な記述集合論のごく基本的な事項
Lebesgue 可測性に関する Solovay-Shelah の結果に必要な記述集合論のごく基本的な事項Hiromi Ishii
 
吉田プロジェクト2019_人工知能のプロセス
吉田プロジェクト2019_人工知能のプロセス吉田プロジェクト2019_人工知能のプロセス
吉田プロジェクト2019_人工知能のプロセスWhiramine
 
読解支援7 10
読解支援7 10読解支援7 10
読解支援7 10kentshioda
 
スペル修正プログラムの作り方 #pronama
スペル修正プログラムの作り方 #pronamaスペル修正プログラムの作り方 #pronama
スペル修正プログラムの作り方 #pronamaHiroyoshi Komatsu
 
学位論文の書き方メモ (Tips for writing thesis)
学位論文の書き方メモ (Tips for writing thesis)学位論文の書き方メモ (Tips for writing thesis)
学位論文の書き方メモ (Tips for writing thesis)Nobuyuki Umetani
 
スタート形態素解析
スタート形態素解析スタート形態素解析
スタート形態素解析tod esking
 

La actualidad más candente (12)

コプト・エジプト語の他動詞の「前名詞形」の軽動詞性と文法化[The "Prenominal" Form of Verbs in Coptic Egypti...
コプト・エジプト語の他動詞の「前名詞形」の軽動詞性と文法化[The "Prenominal" Form of Verbs in Coptic Egypti...コプト・エジプト語の他動詞の「前名詞形」の軽動詞性と文法化[The "Prenominal" Form of Verbs in Coptic Egypti...
コプト・エジプト語の他動詞の「前名詞形」の軽動詞性と文法化[The "Prenominal" Form of Verbs in Coptic Egypti...
 
はじめての生成文法 《後編》
はじめての生成文法 《後編》はじめての生成文法 《後編》
はじめての生成文法 《後編》
 
文献紹介:格フレームの対応付けに基づく用言の言い換え
文献紹介:格フレームの対応付けに基づく用言の言い換え文献紹介:格フレームの対応付けに基づく用言の言い換え
文献紹介:格フレームの対応付けに基づく用言の言い換え
 
Using ~たから and つもり
Using ~たから and つもりUsing ~たから and つもり
Using ~たから and つもり
 
【一級】対義語類義語1
【一級】対義語類義語1【一級】対義語類義語1
【一級】対義語類義語1
 
Nl220 Pitman-Yor Hidden Semi Markov Model
Nl220 Pitman-Yor Hidden Semi Markov ModelNl220 Pitman-Yor Hidden Semi Markov Model
Nl220 Pitman-Yor Hidden Semi Markov Model
 
Lebesgue 可測性に関する Solovay-Shelah の結果に必要な記述集合論のごく基本的な事項
Lebesgue 可測性に関する Solovay-Shelah の結果に必要な記述集合論のごく基本的な事項Lebesgue 可測性に関する Solovay-Shelah の結果に必要な記述集合論のごく基本的な事項
Lebesgue 可測性に関する Solovay-Shelah の結果に必要な記述集合論のごく基本的な事項
 
吉田プロジェクト2019_人工知能のプロセス
吉田プロジェクト2019_人工知能のプロセス吉田プロジェクト2019_人工知能のプロセス
吉田プロジェクト2019_人工知能のプロセス
 
読解支援7 10
読解支援7 10読解支援7 10
読解支援7 10
 
スペル修正プログラムの作り方 #pronama
スペル修正プログラムの作り方 #pronamaスペル修正プログラムの作り方 #pronama
スペル修正プログラムの作り方 #pronama
 
学位論文の書き方メモ (Tips for writing thesis)
学位論文の書き方メモ (Tips for writing thesis)学位論文の書き方メモ (Tips for writing thesis)
学位論文の書き方メモ (Tips for writing thesis)
 
スタート形態素解析
スタート形態素解析スタート形態素解析
スタート形態素解析
 

Último

【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 

Último (9)

【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 

正規表現を覚えよう(初級編)