SlideShare une entreprise Scribd logo
1  sur  40
Télécharger pour lire hors ligne
正規表現を覚えよう
(中級編)
アークシステム株式会社 鈴⽊ 一生
正規表現を覚えよう 2
前回までの復習
正規表現とは、
「メタ文字」と呼ばれる特殊文字と
文字列の組み合わせで複数の文字列を表現し、
検索やgrepの機能を強⼒にする
ここだけ読んでも意味がわかりませんが、
今のみなさんなら、もう理解できると思います。
(もしわからなければ、初級編を読みましょう)
正規表現を覚えよう 3
前回までの復習
代表的なメタ文字
¥t、¥n タブ、改⾏
. とにかく、何でもいいから1文字
+ 直前の文字を1個以上繰り返す
* 直前の文字を0個以上繰り返す
? 直前の文字がある、またはない
(または、ものぐさ検索)
^ ⾏頭
$ ⾏末
¥ エスケープシーケンス
{n,m} 繰り返し数の指定
正規表現を覚えよう 4
もう少し複雑なメタ文字
正規表現で使用できるメタ文字はもう少し存在します。
それらを解説していきましょう。
[] この中のどれか(キャラクタクラス)
[-] キャラクタクラスの範囲指定
[^] キャラクタクラスの否定
| または
() グループ化
正規表現を覚えよう 5
「[]」この中のどれか(キャラクタクラス)
検索文字列:私は[男⼥⼈]です
「[]」は「[]内のどれかにマッチする」を表しています。
上記の例だと、「男」「⼥」「⼈」のどれかになります。
正規表現を覚えよう 6
検索結果
「私は男です」「私は⼥です」「私は⼈です」にヒットします。
「私は犬です」にはヒットしていないのがわかりますか?
正規表現を覚えよう 7
「[-]」キャラクタクラスの範囲指定
検索文字列:[2-6い-え]
「[2-6]」は「2から6の文字コードの範囲」を表しています。
上記の例だと、「2,3,4,5,6,い,う,え」のどれかになります。
正規表現を覚えよう 8
検索結果
文字コードの範囲なので、ひらがなや漢字も使用できます。
正規表現を覚えよう 9
「[^]」キャラクタクラスの否定
検索文字列:[^2-6い-え]
「[^〜]」は「〜で指定した文字以外」を表しています。
上記の例だと、「2,3,4,5,6,い,う,え」以外の文字になります。
正規表現を覚えよう 10
先ほどとヒットの状態が反転しているのがわかりますか?
検索結果
正規表現を覚えよう 11
検索文字列:私は[^⼈]です
現在の検索結果では「私はです」がヒットしていません。
ヒットするように検索文字列を修正してください
例題
正規表現を覚えよう 12
検索文字列:私は[^⼈]*です または 私は[^⼈]?です
解答
正規表現を覚えよう 13
検索文字列:私は. です|私は. でした
「|」は「または」を表しています。
「|」を使用する事で、複数の表現を並べる事ができます。
「|」または
正規表現を覚えよう 14
「私は〜です」または「私は〜でした」が
ヒットしています。
検索結果
正規表現を覚えよう 15
検索文字列:私は.((です)|(でした))
「()」は「ひとまとまりの文字列」を表しています。
「(です)|(でした)」で、「「です」または「でした」」を表します。
「()」グループ化
正規表現を覚えよう 16
結果は先ほどと同じですね。
検索結果
正規表現を覚えよう 17
その他のメタ文字
その他は主に省略表現です。
¥d 数字。[0-9]と同意
¥D 数字以外。[^0-9]と同意
¥s 空白。[ ¥t¥n]と同意
¥S 空白以外。[^ ¥t¥n]と同意
¥c 英数字と_。[a-zA-Z0-9_]と同意。
¥C ¥c以外
¥i 英字と_。[a-zA-Z_]と同意。
¥I ¥i以外
ここまでの知識で、ほとんどの正規表現は(たぶん)読めます。
正規表現を覚えよう 18
正規表現による置換
これまでの正規表現は、主に検索用でした。
しかし、真に威⼒を発揮するのは
実は置換を⾏う時です。
では、これまで得た知識を確認する意味で、
例題⽅式で⾒ていきましょう。
正規表現を覚えよう 19
例題
以下の文章は「ください」と「下さい」が混在しています。
「ください」に統一してください。
正規表現を覚えよう 20
検索文字列:下さい 置換文字列:ください
簡単でしたね。
って言うか、正規表現関係ないですね。
解答
正規表現を覚えよう 21
例題
以下の文章に、メールで引用したかのように、
⾏頭に「> 」を付与してください。
正規表現を覚えよう 22
検索文字列:^ 置換文字列:>
「^」や「$」は場所を意味しますが、それを置換する事によって、
⾏頭や⾏末に文字を挿⼊する事ができます。
解答
正規表現を覚えよう 23
例題
以下のクレジットカード番号を、「*」でマスクしてください。
正規表現を覚えよう 24
検索文字列:¥d 置換文字列:*
ここまでは楽勝ですね。では次は?
解答
正規表現を覚えよう 25
問題
以下の全ての単語を「"」で囲んでください。
ただし、置換できるのは1回だけ。
正規表現を覚えよう 26
正規表現は複数のパターンを表現するので、
異なる文字列を置換する時は注意が必要です。
例えば、こうやって置換しようとすると・・・
検索文字列:.*
置換文字列:""
大失敗ですね。
では、どうするか?
正規表現の置換
正規表現を覚えよう 27
「()」キャプチャ
こうします。
検索文字列:(.+)
置換文字列:"¥1"
グループ化したパターンは、先頭からそれぞれ番号が振られます。
振られた番号は置換文字列で利用する事ができます。
これを「キャプチャ」といいます。
※注意 キャプチャの表現の仕⽅は処理系により異なります。(¥1は秀丸の場合)
正規表現を覚えよう 28
キャプチャの応用
以下の日付を「YYYY-MM-DD」形式にしてください。
正規表現を覚えよう 29
キャプチャの応用
検索文字列:(¥d{4}).?(¥d{2}).?(¥d{2})
置換文字列:¥1-¥2-¥3
正規表現を覚えよう 30
問題
以下の日付を「MM-DD-YY」形式にしてください。
正規表現を覚えよう 31
検索文字列:(¥d{2})(¥d{2})(¥d{2})(¥d{2})
置換文字列:¥3-¥4-¥2
ね、便利でしょう?
解答
正規表現を覚えよう 32
問題
以下の文章中のJavaをPHPに置き換えてください。
ただし、JavaScriptはそのままで。
正規表現を覚えよう 33
よくやる失敗
後ろにSがないJavaを表すつもりで、こうすると・・・
検索文字列:Java[^S] 置換文字列:PHP
余計なところまで置換されてしまいました。(「で」が消えてる・・)
正規表現を覚えよう 34
前後読み
では、どうするかと言えば・・・
検索文字列:Java(?!S) 置換文字列:PHP
ほら、できました。
正規表現を覚えよう 35
前後読み
正規表現では、「〜に続いて・・・」や、
「・・・の前の〜」と言う表現をすることができます。
これを「前後読み」とか「先読み」「戻り読み」と言います。
検索するときにはあまり使いませんが、
置換するときにはかなり便利です。
前後読みには、以下の4つがあります。
肯定戻り読み (?<=…) 左側に…が存在する箇所
否定戻り読み (?<!…) 左側に…が存在しない箇所
肯定先読み (?=…) 右側に…が存在する箇所
否定先読み (?!…) 右側に…が存在しない箇所
※注意 戻り読みは処理系によってはサポートされません
正規表現を覚えよう 36
前後読み
前後読みは^や$と同様、場所を示します。
例えば、先ほどの例題で次のようにすると・・・
検索文字列:(?=Java) 置換文字列:★
正規表現を覚えよう 37
前後読み
こうなります。
右側に「Java」がある場所を
「★」に置換しているのがわかりますか?
正規表現を覚えよう 38
問題
以下の文章の宿泊地を「奈良」に置換してください。
「東京都」を「東奈良」に置換してはいけませんよ。
正規表現を覚えよう 39
検索文字列:(?<!東)京都 置換文字列:奈良
解答
正規表現を覚えよう 40
最後に
以上で正規表現の中級編は終わりです。
前後読みまで使いこなすには、
時間がかかると思いますが、
使っていかないと、いつまでたっても身につきません。
どんどん使ってみてください。
いつの間にか、エディタに「正規表現」の
オプションがないと、イラっとするようになりますよ。

Contenu connexe

Tendances

コプト・エジプト語の他動詞の「前名詞形」の軽動詞性と文法化[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
 
Lebesgue 可測性に関する Solovay-Shelah の結果に必要な記述集合論のごく基本的な事項
Lebesgue 可測性に関する Solovay-Shelah の結果に必要な記述集合論のごく基本的な事項Lebesgue 可測性に関する Solovay-Shelah の結果に必要な記述集合論のごく基本的な事項
Lebesgue 可測性に関する Solovay-Shelah の結果に必要な記述集合論のごく基本的な事項
Hiromi Ishii
 
【一級】対義語類義語1
【一級】対義語類義語1【一級】対義語類義語1
【一級】対義語類義語1
hagunnzyou
 
スペル修正プログラムの作り方 #pronama
スペル修正プログラムの作り方 #pronamaスペル修正プログラムの作り方 #pronama
スペル修正プログラムの作り方 #pronama
Hiroyoshi Komatsu
 

Tendances (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 つもり
 
Lebesgue 可測性に関する Solovay-Shelah の結果に必要な記述集合論のごく基本的な事項
Lebesgue 可測性に関する Solovay-Shelah の結果に必要な記述集合論のごく基本的な事項Lebesgue 可測性に関する Solovay-Shelah の結果に必要な記述集合論のごく基本的な事項
Lebesgue 可測性に関する Solovay-Shelah の結果に必要な記述集合論のごく基本的な事項
 
文献紹介:格フレームの対応付けに基づく用言の言い換え
文献紹介:格フレームの対応付けに基づく用言の言い換え文献紹介:格フレームの対応付けに基づく用言の言い換え
文献紹介:格フレームの対応付けに基づく用言の言い換え
 
学位論文の書き方メモ (Tips for writing thesis)
学位論文の書き方メモ (Tips for writing thesis)学位論文の書き方メモ (Tips for writing thesis)
学位論文の書き方メモ (Tips for writing thesis)
 
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
 
【一級】対義語類義語1
【一級】対義語類義語1【一級】対義語類義語1
【一級】対義語類義語1
 
スペル修正プログラムの作り方 #pronama
スペル修正プログラムの作り方 #pronamaスペル修正プログラムの作り方 #pronama
スペル修正プログラムの作り方 #pronama
 
吉田プロジェクト2019_人工知能のプロセス
吉田プロジェクト2019_人工知能のプロセス吉田プロジェクト2019_人工知能のプロセス
吉田プロジェクト2019_人工知能のプロセス
 
Legendre変換の練習問題
Legendre変換の練習問題Legendre変換の練習問題
Legendre変換の練習問題
 

En vedette

正規表現入門
正規表現入門正規表現入門
正規表現入門
thinca
 
Spring勉強会2
Spring勉強会2Spring勉強会2
Spring勉強会2
gaaupp
 
次世代数値演算 ライブラリ Decimal という再発明の意義
次世代数値演算 ライブラリ Decimal という再発明の意義次世代数値演算 ライブラリ Decimal という再発明の意義
次世代数値演算 ライブラリ Decimal という再発明の意義
Tadashi Saito
 
【PDF版】破壊的イノベーション ケーススタディ:テスラ・モータース
【PDF版】破壊的イノベーション ケーススタディ:テスラ・モータース【PDF版】破壊的イノベーション ケーススタディ:テスラ・モータース
【PDF版】破壊的イノベーション ケーススタディ:テスラ・モータース
Shintaro Shitanaka
 
Aizu.LT::Tokyo #2
Aizu.LT::Tokyo #2Aizu.LT::Tokyo #2
Aizu.LT::Tokyo #2
Taku Unno
 
JSAI 1K3-2 知識ベースに基づく言語横断質問応答における訳質の影響
JSAI 1K3-2 知識ベースに基づく言語横断質問応答における訳質の影響JSAI 1K3-2 知識ベースに基づく言語横断質問応答における訳質の影響
JSAI 1K3-2 知識ベースに基づく言語横断質問応答における訳質の影響
Kyoshiro Sugiyama
 
sigfpai2009_okanohara
sigfpai2009_okanoharasigfpai2009_okanohara
sigfpai2009_okanohara
Hiroshi Ono
 

En vedette (20)

正規表現入門 星の高さを求めて
正規表現入門 星の高さを求めて正規表現入門 星の高さを求めて
正規表現入門 星の高さを求めて
 
正規表現入門
正規表現入門正規表現入門
正規表現入門
 
Spring勉強会2
Spring勉強会2Spring勉強会2
Spring勉強会2
 
正規表現で楽しよう
正規表現で楽しよう正規表現で楽しよう
正規表現で楽しよう
 
Agile Baseball Science - はじめてのセイバーメトリクス
Agile Baseball Science - はじめてのセイバーメトリクスAgile Baseball Science - はじめてのセイバーメトリクス
Agile Baseball Science - はじめてのセイバーメトリクス
 
Ordinary Management
Ordinary ManagementOrdinary Management
Ordinary Management
 
次世代数値演算 ライブラリ Decimal という再発明の意義
次世代数値演算 ライブラリ Decimal という再発明の意義次世代数値演算 ライブラリ Decimal という再発明の意義
次世代数値演算 ライブラリ Decimal という再発明の意義
 
Dns primer
Dns primerDns primer
Dns primer
 
【PDF版】破壊的イノベーション ケーススタディ:テスラ・モータース
【PDF版】破壊的イノベーション ケーススタディ:テスラ・モータース【PDF版】破壊的イノベーション ケーススタディ:テスラ・モータース
【PDF版】破壊的イノベーション ケーススタディ:テスラ・モータース
 
Japan Venture going Global 2014,Oct,22 Final version
Japan Venture going Global 2014,Oct,22 Final versionJapan Venture going Global 2014,Oct,22 Final version
Japan Venture going Global 2014,Oct,22 Final version
 
正規表現
正規表現正規表現
正規表現
 
goo基盤を支えるOpenstack
goo基盤を支えるOpenstackgoo基盤を支えるOpenstack
goo基盤を支えるOpenstack
 
Yahoo! JAPANとRiak
Yahoo! JAPANとRiakYahoo! JAPANとRiak
Yahoo! JAPANとRiak
 
認知科学会サマースクール2015・人工知能と言語機能
認知科学会サマースクール2015・人工知能と言語機能認知科学会サマースクール2015・人工知能と言語機能
認知科学会サマースクール2015・人工知能と言語機能
 
複数の客観的手法を用いたテキスト含意認識評価セットの構築
複数の客観的手法を用いたテキスト含意認識評価セットの構築複数の客観的手法を用いたテキスト含意認識評価セットの構築
複数の客観的手法を用いたテキスト含意認識評価セットの構築
 
Aizu.LT::Tokyo #2
Aizu.LT::Tokyo #2Aizu.LT::Tokyo #2
Aizu.LT::Tokyo #2
 
Абрамов Н.Н.
Абрамов Н.Н.Абрамов Н.Н.
Абрамов Н.Н.
 
JSAI 1K3-2 知識ベースに基づく言語横断質問応答における訳質の影響
JSAI 1K3-2 知識ベースに基づく言語横断質問応答における訳質の影響JSAI 1K3-2 知識ベースに基づく言語横断質問応答における訳質の影響
JSAI 1K3-2 知識ベースに基づく言語横断質問応答における訳質の影響
 
研究
研究研究
研究
 
sigfpai2009_okanohara
sigfpai2009_okanoharasigfpai2009_okanohara
sigfpai2009_okanohara
 

Dernier

Dernier (12)

Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 

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