SlideShare ist ein Scribd-Unternehmen logo
1 von 61
はじめての正規表現
∼仕事を楽しくするエッセンシャル∼
author:@suwork
1
本テキストの対象者
• 正規表現ってなに?とのピュアな人
• テキストエディタで検索ウィンドウを開いたと
きに「正規表現」にチェックが入っていない人
• サクラエディタ、秀丸エディタなどのWindows
のテキストエディタを扱う人(※)
※テキスト内でWindowsに対応したテキストエディタを用います
(正規表現とWindowsは関係ありません)
2
テキストに入る前に……
• 本テキストはWindows7マシン+iCloud keynote(beta)
で作成しています
• テンプレートは「Azusa Colors」を利用しています。あ
りがとうございます(http://memo.sanographix.net/
post/113681262780)
• 本テキストが完成する30分前に、iCloudが変な同期を
行い、keyファイルが壊れました(復元不可)。……こ
れは思い出して書き直したのだよ
3
正規表現ってなに?
• 正規表現は、強力で柔軟、かつ効率的なテキ
スト処理の を握る存在だ。
4
• さまざまな用途に対応できる能
力と表現力を持った一般的なパ
ターン言語が発達してきた。
(略)このパターン言語とパ
ターン自体を正規表現と呼ぶ。
オライリー・ジャパン
詳説 正規表現 第3版 より抜粋
結局、正規表現ってなに?
• かの偉い人は言いました
5
• ……若干意味を取り違えている気がします
が、手を動かして試していきましょう
プログラマーの格言34(盗作多し)
目で追う暇があるなら動かせ。脳細胞よりもCPUの
ほうが解析が速い。そして、その間、休める。
出典:プログラマーの格言(盗作多し)(http://www2.biglobe.ne.jp/oni_page/other/etc/pr03.html)より
このテキストに必要なもの
テキストエディタ
6
みんな大好きサクラエディタでいいよ!
#僕は秀丸を使うね!
テキストエディタの設定
• 検索ウィンドウの正規表現にチェックを入れ
るべし
7
正規表現ってなに? Part2
• こんなことがありました
8
上司「郵便番号と住所を一つの項目で管理しているウェブシステムが、
今度のシステム開発で郵便番号と住所を別項目で管理するようになるん
だよね。それで住所項目から郵便番号を導出して移行する必要があるん
だけど、現状の住所項目の登録内容を見ると郵便番号が入っていたり、
入っているけど書式が正しくなかったりしていて、どれくらい工数が必要
か検討がつかないんだよね。80万行くらいのCSVファイルなんだけど、
ざっくりでいいから郵便番号がちゃんと設定されていないレコード数を
教えてくれる?完璧な結果は必要はないけど、精度が高いと嬉しい。CSV
ファイルはサーバに圧縮して置いてあるから。なるべく早めに欲しいな
あ(意訳:早くよこせ)」
僕「アッハイ」
正規表現ってなに? Part2
• 長い、長いけどひとまず整理をすると……
1. 80万行くらいのCSVファイルの
2. 住所項目に郵便番号が設定されていないレ
コードを探す
3. 精度は高いほうが良い
4. 早めに欲しい
9
正規表現ってなに? Part2
• データサンプルは以下のとおり
10
名前,取扱支店,発注回数,住所,電話番号,カラムN
S名N子,近畿支店,21,530-0001 大阪府 ●●…,999-0412-0109,新作ドーナッツ
の試食
I十嵐K子,中国支店,59,680-0001 鳥取県 ●●…,999-0906-0056,家事全般
Y口M羽,関東支店,14,千葉県 ▲▲…,999-0514-0033,メール
Jヶ崎M嘉,関東支店,43,330-0002 埼玉県 ▲▲…,999-0144-0206,カラオケ
M方A海,東北支店,37,030-001 青森県 ●●…,999-0858-0559,指の運動
F居T,近畿支店,64,滋賀県 ■■…,999-0834-0566,占い
O石I,中部支店,60,410-0001 静岡県 ■■…,999-0635-0758,プログラミング
M川Mく,近畿支店,88,530-0002 大阪府 ●●…,999-0062-0464,猫カフェ巡り
T時A梨,東北支店,84,010-00001 秋田県 ▲▲…,999-0135-0619,ケーキ作り
H口Aやめ,近畿支店,15,三重県 ▲▲…,999-0006-0878,時代劇鑑賞、忍者グッズ収
集、撮影所巡り
正規表現ってなに? Part2
• さあ、こんな時はどうやって探そう?
11
1. CSVならExcelが得意!Excelに貼り付けてどうにかしよ
う
→ 80万行のファイルを!やりたくない
2. 簡単なスクリプトでも作るか……
→ 精度を求めているので、バグは厳禁(自信があるならどうぞ)
3. 俺の目に任せろ(目視で件数を数える)
→ その根性は別のタイミングにとっておいて下さい
正規表現ってなに? Part2
• 冷静になってレコードを見てみると、法則が
あります
12
1. CSV(カンマ区切り)との法則
2. 郵便番号(3桁数字+ハイフン+4桁数
字)との法則
• このようにある程度の法則がある場合、「正規表
現」が有用です
正規表現ってなに? Part2
• 以下の文字列を設定して検索してみよう
13
(?<=^([^,]*,){3})(?!
d{3}-d{4}[^d])
※「」は「¥」の半角
正規表現ってなに? Part2
• すごい、それっぽいレコードが取得できた!(スマン、秀丸だけの方言が
入ってるかも知れない)
14
そもそも郵便番号を入力していないレコード
入力しているが書式を誤っているレコード
正規表現ってなに? Part2
15
これはスゴイ(大
豆ではない)
※スゴイダイズは大塚チルド食品株式会社の製品です
正規表現ってなに? Part2
• スゴイだけで終わってはいけません。検索に
使った文字列の意味は……?
16
(?<=^([^,]*,){3})(?!d{3}-d{4}[^d])
郵便番号の書式が存在し
ないことを表現
先頭から3番目のカンマ
区切りの位置取りを表現 +
=先頭から3番目のカンマ区切りの後ろに、郵便番号が
存在しないレコードを検索対象とする、としているのだ
正規表現ってなに? Part2
• 「としているのだ」と宣言されても、複雑怪
奇な文字列でなぜ検索できるのだろう?
• この複雑怪奇な文字列の塊がまさに「正規
表現」なのである
17
正規表現ってなに? Part2
• 黄色文字は位置であったり、文字であったり、その繰り返し等を定
義したりする文字
「メタ文字」と呼びます
• 紫色文字は文字そのもの
「リテラル文字」と呼びます
• 正規表現は、メタ文字とリテラル文字の組み合わせで強力な文
字列パターンを表現することが可能
18
(?<=^([^,]*,){3})(?!d{3}-d{4}[^d])
正規表現ってなに? Part2
• 正規表現はメタ文字の使いっぷりですべてが
決まります(良くも悪くも)
• むしろメタ文字を制するもの正規表現を制す
と言って過言ではない。メタ文字の仕様(役
割)を理解しよう
• 次のページから基本的な正規表現を学んでい
きましょう!
19
位置を表現:^(ハット記号)
• 文字列にはマッチせず、文字列の先頭を表現
する特殊なメタ文字です
• ハット記号単体で先頭に文字を挿入したい場
合やリテラル文字と組み合わせて、先頭文字
に対してxxしたいなどの時によく使います
20
※正式名称
位置を表現:^(ハット記号)
• 先頭に文字を入力してコマンドを作る
21
WS000017.JPG
WS000016.JPG
WS000015.JPG
WS000014.JPG
…
del WS000017.JPG
del WS000016.JPG
del WS000015.JPG
del WS000014.JPG
…
検索 ^
置換 del△
位置を表現:^(ハット記号)
• 特定のレコードから始まる行だけを消す
22
属性,名前,取扱支店,...
cu,S名N子,近畿支店,...
cu,I十嵐K子,中国支店,...
cu,Jヶ崎M嘉,関東支店,...
co,M方A海,東北支店,...
co,F居T,近畿支店,...
co,O石I,中部支店,...
pa,M川Mく,近畿支店,...
pa,T時A梨,東北支店,...
pa,H口Aやめ,近畿支店,...
検索 ^cu.+n
置換
属性,名前,取扱支店,...
co,M方A海,東北支店,...
co,F居T,近畿支店,...
co,O石I,中部支店,...
pa,M川Mく,近畿支店,...
pa,T時A梨,東北支店,...
pa,H口Aやめ,近畿支店,...
位置を表現:$(ドル記号)
• 文字列にはマッチせず、文字列の末尾を表現
する特殊なメタ文字です
• ハット記号は先頭ですが、ドル記号は末尾を
表します。ドル記号単体で末尾に何か文字を
入れたり、リテラル文字と組み合わせて末尾
の文字列を特定したりすることが可能です
23
位置を表現:$(ドル記号)
• (こんな使い方はしないと思いますが)末尾に文字列を追加する
24
ブラックニッカスペシャル
ブラックニッカ 8年
ブラックニッカ クリア
フロム・ザ・バレル
スーパーニッカ
鶴 17年
オールモルト
検索 $
置換 を購入する
ブラックニッカスペシャルを購入する
ブラックニッカ 8年を購入する
ブラックニッカ クリアを購入する
フロム・ザ・バレルを購入する
スーパーニッカを購入する
鶴 17年を購入する
オールモルトを購入する
位置を表現:$(ドル記号)
• 末尾の更新年月だけを消す(作成月は残す)
25
カラム,作成月,更新月
あああ,2015-01,2015-01
いいい,2015-01,2015-01
ううう,2014-12,2015-01
えええ,2014-11,2015-01
おおお,2014-06,2015-01
検索 ,2015-01$
置換
カラム,作成月,更新月
あああ,2015-01
いいい,2015-01
ううう,2014-12
えええ,2014-11
おおお,2014-06
位置を表現:^ $
• ハット記号とドル記号は組み合わせで絶大な
パワーを発揮します。例えばファイル名が
「suwork」であること正規表現で調べようと
すると……
26
検索文字 判定結果 理由
suwork sssuworkkkで検索できてしまう
^suwork suworkkkで検索できてしまう
suwork$ sssuworkで検索できてしまう
^suwork$ ○
先頭がsでuworと続き、末尾がkであ
ることを保証
単一の文字とマッチ:.(ドット)
• ドット記号は何かの文字にマッチするメタ文
字です
• 後述する量指定子と組み合わせることで、
マッチの幅が広がります
27
単一の文字とマッチ:.(ドット)
• 誕生日が10日以降の値を特定する
28
住所,電話番号,誕生日
大阪,999-0412-0109,10月10日
鳥取,999-0906-0056,8月10日
青森,999-0858-0559,8月1日
大阪,999-0062-0464,2月22日
滋賀,999-0834-0566,7月1日
秋田,999-0135-0619,12月8日
検索 月..日$
住所,電話番号,誕生日
大阪,999-0412-0109,10月10日
鳥取,999-0906-0056,8月10日
青森,999-0858-0559,8月1日
大阪,999-0062-0464,2月22日
滋賀,999-0834-0566,7月1日
秋田,999-0135-0619,12月8日
文字クラス:[](ブラケット)
• ブラケットは[]の中に含めた文字のいずれかと一致す
るメタ文字です
• ハイフン(-)を使うことで文字の範囲を表現すること
が可能です
29
検索文字 マッチする文字
[a-z] abcdefghijklmnopqrstuvwxyz のいずれか
[A-Z] ABCDEFGHIJKLMNOPQRSTUVWXYZ のいずれか
[0-9] 0123456789 のいずれか
[a-zA-Z0-9]
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789 のいずれか
文字クラス:[](ブラケット)
• htmlドキュメント内の<h>(Heading)ダグを特定する
30
<h1>ヘッダ1</h1>
<div>
<h2>ヘッダ2</h2>
<div>
<h3>ヘッダ3</h3>
<h4>ヘッダ4</h4>
<h5>ヘッダ5</h5>
</div>
</div>
検索 <h[123456]>
<h1>ヘッダ1</h1>
<div>
<h2>ヘッダ2</h2>
<div>
<h3>ヘッダ3</h3>
<h4>ヘッダ4</h4>
<h5>ヘッダ5</h5>
</div>
</div>
文字クラス:[](ブラケット)
• htmlドキュメント内の<h>(Heading)ダグを特定する2
31
<h1>ヘッダ1</h1>
<div>
<h2>ヘッダ2</h2>
<div>
<h3>ヘッダ3</h3>
<h4>ヘッダ4</h4>
<h5>ヘッダ5</h5>
</div>
</div>
検索 <h[1-6]>
<h1>ヘッダ1</h1>
<div>
<h2>ヘッダ2</h2>
<div>
<h3>ヘッダ3</h3>
<h4>ヘッダ4</h4>
<h5>ヘッダ5</h5>
</div>
</div>
2015/30/10
2015/08/01
2015/02/22
2015/19/01
2015/08/40
2015/11/11
2015/47/10
2015/11/12
2015/12/32
2015/01/13
文字クラス:[](ブラケット)
• 日付書式をなるべく厳格に特定する
32
2015/30/10
2015/08/01
2015/02/22
2015/19/01
2015/08/40
2015/11/11
2015/47/10
2015/11/12
2015/12/32
2015/01/13
検索 [0-9][0-9][0-9][0-9]/[01][0-9]/[0-3][0-9]
文字クラス:[^](否定のブラケット)
• 否定のブラケットは[^]の中に含めた文字のいず
れかと一致しない文字を表現するメタ文字です
• 否定を意味する「^」は必ず先頭に記述する必
要があります(2文字以降に記述した場合、通
常の文字クラスになります)
• ハイフン(-)を使うことで文字の範囲を表現す
ることが可能です(ブラケットと同じ)
33
文字クラス:[^](否定のブラケット)
• 先頭が数字でない行を特定する
34
02:37:34.940 [main] (Pleiades) Pleiad
02:37:34.940 [main] (Pleiades) Eclips
02:37:35.247 [main] (PropertySet) sto
org.osgi.framework.BundleException: バ
at org.eclipse.osgi.framework.
at org.eclipse.osgi.framework.
02:37:35.248 [main] (LauncherTransfor
02:37:34.940 [main] (Pleiades) Pleiad
02:37:34.940 [main] (Pleiades) Eclips
02:37:35.247 [main] (PropertySet) sto
org.osgi.framework.BundleException: バ
at org.eclipse.osgi.framework.
at org.eclipse.osgi.framework.
02:37:35.248 [main] (LauncherTransfor
検索 ^[^0-9]
2015/30/10
2015/08/01
2015/02/22
2015/19/01
2015/08/40
^
2015/47/10
文字クラス:[^](否定のブラケット)
• 「^」は必ず先頭に記述すること
35
2015/30/10
2015/08/01
2015/02/22
2015/19/01
2015/08/40
^
2015/47/10
検索 [0-9^]
エスケープ文字
• 特殊な文字を表現するエスケープ文字があります
36
メタ文字 意味
. ドットそのもの。量指定子(後述)が存在するため
r キャリッジリターン(CR)。Mac OSの改行コード
n ラインフィード(LF)。UNIXの改行コード
rn CR+LF。Windowsの改行コード(rとnを組み合わせただけ)
t タブ文字
d [0-9]
D [^0-9]
s 空白、タブ文字、改行
S 空白、タブ文字、改行以外
i [A-Za-z_]
c [A-Za-z_0-9]
エスケープ文字
37
2015/30/10
2015/08/01
2015/02/22
2015/19/01
2015/08/40
2015/11/11
2015/47/10
2015/11/12
2015/12/32
2015/01/13
• 日付書式をなるべく厳格に特定する2
2015/30/10
2015/08/01
2015/02/22
2015/19/01
2015/08/40
2015/11/11
2015/47/10
2015/11/12
2015/12/32
2015/01/13
検索 dddd/[01]d/[0-3]d
量指定子
• 付加することで文字に対して「反復機能」を得ることが可能です
38
量指定子 意味
?
ひとつ前の文字の存在を1回のみ許容する
→ 任意の1個(0または1)
*
ひとつ前の文字の存在を0回以上、無限に許容する
→ 任意の0個以上(無限)
+
ひとつ前の文字の存在を1回以上、無限に許容する
→ 任意の1個以上(無限)
{N}、{f,t}
数字一つを指定した場合、一つ文字の存在をN回のみ許容す
る
ひとつ前の文字の存在をf回以上、t回まで許容する
→任意のf個以上(t個まで)
量指定子:?(疑問符)
• 存在が不定な文字を考慮したマッチング(某DBのツールは、
行が選択できない場合、selectedの後ろに「.」が付かない)
39
21 rows selected.
no rows selected
37 rows selected.
no rows selected
64 rows selected.
60 rows selected.
15 rows selected.
21 rows selected.
no rows selected
37 rows selected.
no rows selected
64 rows selected.
60 rows selected.
15 rows selected.
検索 selected.?$
名前,取扱支店,...
S名N子,近畿支店,...
Jヶ崎M嘉,関東支店,...
M方A海,東北支店,...
O石I,中部支店,...
M川Mく,近畿支店,...
T時A梨,東北支店,...
H口Aやめ,近畿支店,...
量指定子:*(アスタリスク)
• CSV形式で先頭カラムを削除する(カラムに値
が設定されているとは限らない)
40
属性,名前,取扱支店,...
cu,S名N子,近畿支店,...
,Jヶ崎M嘉,関東支店,...
co,M方A海,東北支店,...
co,O石I,中部支店,...
,M川Mく,近畿支店,...
,T時A梨,東北支店,...
pa,H口Aやめ,近畿支店,...
検索 ^[^,]*,
置換
量指定子:+(プラス記号)
• なにかしらかの値が必ず設定されている行を特定する
41
属性,名前,取扱支店,...
!
cu,Jヶ崎M嘉,関東支店,...
!
co,O石I,中部支店,...
pa,M川Mく,近畿支店,...
!
pa,H口Aやめ,近畿支店,...
属性,名前,取扱支店,...
!
cu,Jヶ崎M嘉,関東支店,...
!
co,O石I,中部支店,...
pa,M川Mく,近畿支店,...
!
pa,H口Aやめ,近畿支店,...
検索 ^.+$
量指定子:{N}
42
2015/30/10
2015/08/01
2015/2/22
2015/19/01
2015/08/40
2015/11/11
2015/47/10
2015/11/12
2015/12/32
2015/1/13
• 日付書式をなるべく厳格に特定する3
2015/30/10
2015/08/01
2015/2/22
2015/19/01
2015/08/40
2015/11/11
2015/47/10
2015/11/12
2015/12/32
2015/1/13
検索 d{4}/[01]?d/[0-3]?d$
量指定子:{f,t}
43
2015/30/10
2015/08/01
2015/2/22
2015/19/01
2015/08/40
2015/11/11
2015/47/10
2015/11/12
2015/12/32
2015/1/13
• 日付書式を特定する4(厳格ではない)
2015/30/10
2015/08/01
2015/2/22
2015/19/01
2015/08/40
2015/11/11
2015/47/10
2015/11/12
2015/12/32
2015/1/13
検索 d{4}/d{1,2}/d{1,2}$
または:|(パイプ)
• パイプ記号はパイプ前後の文字列にマッチし
ます
• プログラムのORと同じような動きと考えて問
題ありません
• パイプ記号はメモリが許す限りいくらでも連
結できます
ああああ|いいいい|うううう|ええええ
44
名前,星座
S名N子,天 座
I十嵐K子,獅子座
M方A海,獅子座
M川Mく,魚座
F居T,蟹座
O石I,蠍座
Y口M羽,蟹座
Jヶ崎M嘉,蠍座
T時A梨,射手座
H口Aやめ,山羊座
または:|(パイプ)
45
• 海のいきものの星座を持つ行を特定する
名前,星座
S名N子,天 座
I十嵐K子,獅子座
M方A海,獅子座
M川Mく,魚座
F居T,蟹座
O石I,蠍座
Y口M羽,蟹座
Jヶ崎M嘉,蠍座
T時A梨,射手座
H口Aやめ,山羊座
検索 魚座¦蟹座
グルーピング:()(カッコ)
• カッコでメタ文字、リテラル文字をくくるこ
とによりグループ化が可能です
• 量指定子、パイプ記号などと組み合わせるこ
とで、より複雑なパターンをつくることが可
能です
46
名前,星座
S名N子,天 座
I十嵐K子,獅子座
M方A海,獅子座
!
!
O石I,蠍座
!
Jヶ崎M嘉,蠍座
T時A梨,射手座
H口Aやめ,山羊座
グルーピング:()(カッコ)
47
• 海のいきものの星座を持つ行を削除する
名前,星座
S名N子,天 座
I十嵐K子,獅子座
M方A海,獅子座
M川Mく,魚座
F居T,蟹座
O石I,蠍座
Y口M羽,蟹座
Jヶ崎M嘉,蠍座
T時A梨,射手座
H口Aやめ,山羊座
検索 ^[^,]*,(魚座¦蟹座)$
置換
名前,星座
!
!
!
M川Mく,魚座
F居T,蟹座
!
Y口M羽,蟹座
!
!
グルーピング:()(カッコ)
48
• 海のいきものの星座を持たない行を削除する(書いてから思った、これ否定のブラケット
でした)
名前,星座
S名N子,天 座
I十嵐K子,獅子座
M方A海,獅子座
M川Mく,魚座
F居T,蟹座
O石I,蠍座
Y口M羽,蟹座
Jヶ崎M嘉,蠍座
T時A梨,射手座
H口Aやめ,山羊座
検索 ^[^,]*,[^魚蟹星]+座$
置換
キャプチャと後方参照:()、n
• グルーピングした文字列をそれ以降で参照(後方参
照)することが出来ます。この場合、グルーピング
の事をキャプチャと呼んだりします
• 後方参照する場合に使用するメタ文字は
1、2、3、.....、n
のようにキャプチャ番号(カッコの順番)+数
字で参照します
• また、0は特殊な後方参照で、マッチしたものすべ
てを表現します
49
キャプチャと後方参照:()、n
50
• 名前、取扱支店、発注回数、住所の順番を発
注回数、取扱支店、住所、名前に入れ替える
名前,取扱支店,発注回数,住所
S名N子,近畿支店,21,530-0001 大阪府 ●●…
I十嵐K子,中国支店,59,680-0001 鳥取県 ●●…
Y口M羽,関東支店,14,千葉県 ▲▲…
Jヶ崎M嘉,関東支店,43,330-0002 埼玉県 ▲▲…
M方A海,東北支店,37,030-001 青森県 ●●…
F居T,近畿支店,64,滋賀県 ■■…
O石I,中部支店,60,410-0001 静岡県 ■■…
M川Mく,近畿支店,88,530-0002 大阪府 ●●…
T時A梨,東北支店,84,010-00001 秋田県 ▲▲…
H口Aやめ,近畿支店,15,三重県 ▲▲…
【置換前】
キャプチャと後方参照:()、n
51
検索 ^([^,]+),([^,]+),([^,]+),([^,n]+)$
置換 3,2,4,1
1 2 3 4
発注回数,取扱支店,住所,名前
21,近畿支店,530-0001 大阪府 ●●…,S名N子
59,中国支店,680-0001 鳥取県 ●●…,I十嵐K子
14,関東支店,千葉県 ▲▲…,Y口M羽
43,関東支店,330-0002 埼玉県 ▲▲…,Jヶ崎M嘉
37,東北支店,030-001 青森県 ●●…,M方A海
64,近畿支店,滋賀県 ■■…,F居T
60,中部支店,410-0001 静岡県 ■■…,O石I
88,近畿支店,530-0002 大阪府 ●●…,M川Mく
84,東北支店,010-00001 秋田県 ▲▲…,T時A梨
15,近畿支店,三重県 ▲▲…,H口Aやめ
【置換後】
キャプチャと後方参照:()、n
52
発注回数,取扱支店,住所,名前,元は→,名前,取扱支店,発注回数,住所
21,近畿支店,530-0001 大阪府 ●●…,S名N子,元は→,S名N子,近畿支店,21,530-0001 大阪府 ●●…
59,中国支店,680-0001 鳥取県 ●●…,I十嵐K子,元は→,I十嵐K子,中国支店,59,680-0001 鳥取県 ●●…
14,関東支店,千葉県 ▲▲…,Y口M羽,元は→,Y口M羽,関東支店,14,千葉県 ▲▲…
43,関東支店,330-0002 埼玉県 ▲▲…,Jヶ崎M嘉,元は→,Jヶ崎M嘉,関東支店,43,330-0002 埼玉県 ▲▲…
37,東北支店,030-001 青森県 ●●…,M方A海,元は→,M方A海,東北支店,37,030-001 青森県 ●●…
64,近畿支店,滋賀県 ■■…,F居T,元は→,F居T,近畿支店,64,滋賀県 ■■…
60,中部支店,410-0001 静岡県 ■■…,O石I,元は→,O石I,中部支店,60,410-0001 静岡県 ■■…
88,近畿支店,530-0002 大阪府 ●●…,M川Mく,元は→,M川Mく,近畿支店,88,530-0002 大阪府 ●●…
84,東北支店,010-00001 秋田県 ▲▲…,T時A梨,元は→,T時A梨,東北支店,84,010-00001 秋田県 ▲▲…
15,近畿支店,三重県 ▲▲…,H口Aやめ,元は→,H口Aやめ,近畿支店,15,三重県 ▲▲…
【置換後】
検索 ^([^,]+),([^,]+),([^,]+),([^,n]+)$
置換 3,2,4,1,元は→,0
1 2 3 4
0
• 順番を入れ替えつつ、元のレコードは後方に残す
キャプチャと後方参照:()、n
53
• ファイルを一括でリネームするコマンドを作る
WS000017.JPG
WS000016.JPG
WS000015.JPG
WS000014.JPG
…
rename WS000017.JPG WS000017.JPG.bk
rename WS000016.JPG WS000016.JPG.bk
rename WS000015.JPG WS000015.JPG.bk
rename WS000014.JPG WS000014.JPG.bk
…
検索 ^S+$
置換 rename 0 0.bk
キャプチャと後方参照:()、n
54
• 置換ばかりで後方参照していますが、検索でも後方参照は可能です
• 同じ数字が11桁連続している不正データを探す
00000000000
12231981273
08496242754
11111111111
88888888888
13259385065
33358501999
61904013958
12329310847
00000000000
12231981273
08496242754
11111111111
88888888888
13259385065
33358501999
61904013958
12329310847
検索 ^(d)1{10}$
ものぐさマッチ:量指定子+?
• 正規表現の量指定子はとても勤勉なの該当す
る最長のマッチ結果を返却します。量指定子
に「?」を付与することで、最小のマッチ結果
を返却するようになります
• これをものぐさマッチ(非よくばりマッチな
どなど)と呼びます
• 勤勉マッチは強欲マッチと呼んだりも
55
ものぐさマッチ:量指定子?
• (強欲|ものぐさ)マッチの範囲を比べる
56
属性,名前,取扱支店,...
cu,S名N子,近畿支店,...
pa,Jヶ崎M嘉,関東支店,...
co,M方A海,東北支店,...
co,O石I,中部支店,...
cu,M川Mく,近畿支店,...
pa,T時A梨,東北支店,...
pa,H口Aやめ,近畿支店,...
【強欲】
検索 ^.+,
【ものぐさ】
検索 ^.+?,
属性,名前,取扱支店,...
cu,S名N子,近畿支店,...
pa,Jヶ崎M嘉,関東支店,...
co,M方A海,東北支店,...
co,O石I,中部支店,...
cu,M川Mく,近畿支店,...
pa,T時A梨,東北支店,...
pa,H口Aやめ,近畿支店,...
正規表現のコツ
• 法則性を見つけること
検索対象から法則性を見つけよう(カンマで区
切られてる?数字で構成されている?等)
• 不用意なマッチに気をつける
^と$を入れない事によるバグは多いです。例えば
YYYYMMDD_Hoge.log
を「d{8}_Hoge.log」でマッチさせたら大丈夫?
57
正規表現のコツ
• 普段から正規表現を使うようにする
当たり前ですが、使わないと覚えません。本テキス
トの内容を駆使すれば、効率は通常の3倍になるで
しょう(MS-06S感)
• 損益分岐点を考えて使う
なんでも正規表現で解決するのは得策ではありませ
ん。日付マッチで感じたと思いますが、日付の完璧
な妥当性を正規表現でマッチさせようとしたら大変
ですよ
58
正規表現のコツ
• Windows+テキストエディタのユーザを対象と
しましたが、UNIX、Linuxコマンドが るよう
になったはずです
1. $ tar zOxvf hoge.tar.gz | grep -c -E '[^,]{3},
[0-9]{3}-[0-9]{4}'
→ 最初の例に類似した結果を取得
2. ls | grep '^[^.]*.log$'
→ 純粋なログファイル一覧を取得
59
最初のサンプルについて
• 最初のサンプルで使ったメタ文字は、本テキストに
は載せていません。ぜひともググってみて下さい
60
(?<=^([^,]*,){3})(?!
d{3}-d{4}[^d])
※赤字部分は本テキストに乗せていません
おしまい
author:suwork
初版:2015/06/13
改定:2015/10/04
61
引用/参考資料
・オライリー・ジャパン 詳説 正規表現 第3版
・IM@S CG DB(http://imas.cg.db.n-hokke.com/)
・大塚チルド食品 スゴイダイズ(http://www.otsuka-chilled.co.jp/product/diz/)
・アイドルマスターシンデレラガールズ(mobage)内より画像を拝借(怒られたら消します)

Weitere ähnliche Inhalte

Was ist angesagt?

IBM Cloudのアカウント管理を学ぶ。リソースグループってなに?
IBM Cloudのアカウント管理を学ぶ。リソースグループってなに?IBM Cloudのアカウント管理を学ぶ。リソースグループってなに?
IBM Cloudのアカウント管理を学ぶ。リソースグループってなに?KotaSato3
 
Entwicklung einer Open Source Strategie
Entwicklung einer Open Source StrategieEntwicklung einer Open Source Strategie
Entwicklung einer Open Source StrategieMatthias Stürmer
 
DeNA TechCon2019 How to implement live streaming client using Unity
DeNA TechCon2019 How to implement live streaming client using UnityDeNA TechCon2019 How to implement live streaming client using Unity
DeNA TechCon2019 How to implement live streaming client using UnityTakeyuki Ogura
 
200人での対戦も可能!?Photon 新SDKについて
200人での対戦も可能!?Photon 新SDKについて200人での対戦も可能!?Photon 新SDKについて
200人での対戦も可能!?Photon 新SDKについてPhoton運営事務局
 
よくわかる音ゲーの作り方
よくわかる音ゲーの作り方よくわかる音ゲーの作り方
よくわかる音ゲーの作り方tenonno tenonno
 
WebSocketのキホン
WebSocketのキホンWebSocketのキホン
WebSocketのキホンYou_Kinjoh
 
【Unite Tokyo 2018】Audio機能の基礎と実装テクニック
【Unite Tokyo 2018】Audio機能の基礎と実装テクニック【Unite Tokyo 2018】Audio機能の基礎と実装テクニック
【Unite Tokyo 2018】Audio機能の基礎と実装テクニックUnityTechnologiesJapan002
 
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」U-dai Yokoyama
 
【Unite Tokyo 2019】大量のオブジェクトを含む広いステージでも大丈夫、そうDOTSならね
【Unite Tokyo 2019】大量のオブジェクトを含む広いステージでも大丈夫、そうDOTSならね【Unite Tokyo 2019】大量のオブジェクトを含む広いステージでも大丈夫、そうDOTSならね
【Unite Tokyo 2019】大量のオブジェクトを含む広いステージでも大丈夫、そうDOTSならねUnityTechnologiesJapan002
 
社内プレゼン勉強会発表資料
社内プレゼン勉強会発表資料社内プレゼン勉強会発表資料
社内プレゼン勉強会発表資料Yoh Nakamura
 
ゲーム音楽演出を進化させる「インタラクティブミュージック」と「音楽的ゲームデザイン」
ゲーム音楽演出を進化させる「インタラクティブミュージック」と「音楽的ゲームデザイン」ゲーム音楽演出を進化させる「インタラクティブミュージック」と「音楽的ゲームデザイン」
ゲーム音楽演出を進化させる「インタラクティブミュージック」と「音楽的ゲームデザイン」Sho Iwamoto
 
Appsheet基礎講座.pptx
Appsheet基礎講座.pptxAppsheet基礎講座.pptx
Appsheet基礎講座.pptxssuser5f5987
 
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要Akira Inoue
 
Spanner から GKE、Spinnaker、そして SRE まで、コロプラが今挑戦していること[Google Cloud INSIDE Games ...
Spanner から GKE、Spinnaker、そして SRE まで、コロプラが今挑戦していること[Google Cloud INSIDE Games ...Spanner から GKE、Spinnaker、そして SRE まで、コロプラが今挑戦していること[Google Cloud INSIDE Games ...
Spanner から GKE、Spinnaker、そして SRE まで、コロプラが今挑戦していること[Google Cloud INSIDE Games ...Google Cloud Platform - Japan
 
Outlook アドイン開発入門
Outlook アドイン開発入門Outlook アドイン開発入門
Outlook アドイン開発入門Hiroaki Oikawa
 
【Unite Tokyo 2019】AWS for Unity Developers
【Unite Tokyo 2019】AWS for Unity Developers【Unite Tokyo 2019】AWS for Unity Developers
【Unite Tokyo 2019】AWS for Unity DevelopersUnityTechnologiesJapan002
 
課金アプリの作り方(高畑)
課金アプリの作り方(高畑)課金アプリの作り方(高畑)
課金アプリの作り方(高畑)Masahide Takahata
 
サウンド実装の手間を省くための CRI ADX2 UnityAudio完全に理解した
サウンド実装の手間を省くための CRI ADX2 UnityAudio完全に理解したサウンド実装の手間を省くための CRI ADX2 UnityAudio完全に理解した
サウンド実装の手間を省くための CRI ADX2 UnityAudio完全に理解したTakaaki Ichijo
 
UnityのフリーライセンスでPC-Android通信を実装するまで
UnityのフリーライセンスでPC-Android通信を実装するまでUnityのフリーライセンスでPC-Android通信を実装するまで
UnityのフリーライセンスでPC-Android通信を実装するまでHiroto Makiyama
 

Was ist angesagt? (20)

IBM Cloudのアカウント管理を学ぶ。リソースグループってなに?
IBM Cloudのアカウント管理を学ぶ。リソースグループってなに?IBM Cloudのアカウント管理を学ぶ。リソースグループってなに?
IBM Cloudのアカウント管理を学ぶ。リソースグループってなに?
 
Entwicklung einer Open Source Strategie
Entwicklung einer Open Source StrategieEntwicklung einer Open Source Strategie
Entwicklung einer Open Source Strategie
 
DeNA TechCon2019 How to implement live streaming client using Unity
DeNA TechCon2019 How to implement live streaming client using UnityDeNA TechCon2019 How to implement live streaming client using Unity
DeNA TechCon2019 How to implement live streaming client using Unity
 
200人での対戦も可能!?Photon 新SDKについて
200人での対戦も可能!?Photon 新SDKについて200人での対戦も可能!?Photon 新SDKについて
200人での対戦も可能!?Photon 新SDKについて
 
よくわかる音ゲーの作り方
よくわかる音ゲーの作り方よくわかる音ゲーの作り方
よくわかる音ゲーの作り方
 
WebSocketのキホン
WebSocketのキホンWebSocketのキホン
WebSocketのキホン
 
【Unite Tokyo 2018】Audio機能の基礎と実装テクニック
【Unite Tokyo 2018】Audio機能の基礎と実装テクニック【Unite Tokyo 2018】Audio機能の基礎と実装テクニック
【Unite Tokyo 2018】Audio機能の基礎と実装テクニック
 
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
 
【Unite Tokyo 2019】大量のオブジェクトを含む広いステージでも大丈夫、そうDOTSならね
【Unite Tokyo 2019】大量のオブジェクトを含む広いステージでも大丈夫、そうDOTSならね【Unite Tokyo 2019】大量のオブジェクトを含む広いステージでも大丈夫、そうDOTSならね
【Unite Tokyo 2019】大量のオブジェクトを含む広いステージでも大丈夫、そうDOTSならね
 
社内プレゼン勉強会発表資料
社内プレゼン勉強会発表資料社内プレゼン勉強会発表資料
社内プレゼン勉強会発表資料
 
ゲーム音楽演出を進化させる「インタラクティブミュージック」と「音楽的ゲームデザイン」
ゲーム音楽演出を進化させる「インタラクティブミュージック」と「音楽的ゲームデザイン」ゲーム音楽演出を進化させる「インタラクティブミュージック」と「音楽的ゲームデザイン」
ゲーム音楽演出を進化させる「インタラクティブミュージック」と「音楽的ゲームデザイン」
 
Appsheet基礎講座.pptx
Appsheet基礎講座.pptxAppsheet基礎講座.pptx
Appsheet基礎講座.pptx
 
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
 
Spanner から GKE、Spinnaker、そして SRE まで、コロプラが今挑戦していること[Google Cloud INSIDE Games ...
Spanner から GKE、Spinnaker、そして SRE まで、コロプラが今挑戦していること[Google Cloud INSIDE Games ...Spanner から GKE、Spinnaker、そして SRE まで、コロプラが今挑戦していること[Google Cloud INSIDE Games ...
Spanner から GKE、Spinnaker、そして SRE まで、コロプラが今挑戦していること[Google Cloud INSIDE Games ...
 
WPF MVVM Review
WPF MVVM ReviewWPF MVVM Review
WPF MVVM Review
 
Outlook アドイン開発入門
Outlook アドイン開発入門Outlook アドイン開発入門
Outlook アドイン開発入門
 
【Unite Tokyo 2019】AWS for Unity Developers
【Unite Tokyo 2019】AWS for Unity Developers【Unite Tokyo 2019】AWS for Unity Developers
【Unite Tokyo 2019】AWS for Unity Developers
 
課金アプリの作り方(高畑)
課金アプリの作り方(高畑)課金アプリの作り方(高畑)
課金アプリの作り方(高畑)
 
サウンド実装の手間を省くための CRI ADX2 UnityAudio完全に理解した
サウンド実装の手間を省くための CRI ADX2 UnityAudio完全に理解したサウンド実装の手間を省くための CRI ADX2 UnityAudio完全に理解した
サウンド実装の手間を省くための CRI ADX2 UnityAudio完全に理解した
 
UnityのフリーライセンスでPC-Android通信を実装するまで
UnityのフリーライセンスでPC-Android通信を実装するまでUnityのフリーライセンスでPC-Android通信を実装するまで
UnityのフリーライセンスでPC-Android通信を実装するまで
 

Andere mochten auch

AIS Program Brochure with Samples
AIS Program Brochure with SamplesAIS Program Brochure with Samples
AIS Program Brochure with SamplesNolan Teng
 
Бизнес-планирование (часть 1 Резюме)
Бизнес-планирование (часть 1 Резюме)Бизнес-планирование (часть 1 Резюме)
Бизнес-планирование (часть 1 Резюме)Софья Митрошина
 
Крашенинникова О.В. кейс "Анализ данных"
Крашенинникова О.В. кейс "Анализ данных"Крашенинникова О.В. кейс "Анализ данных"
Крашенинникова О.В. кейс "Анализ данных"Ольга Крашенинникова
 
Сводка поступивших предложений по уведомлению о начале разработки законопроек...
Сводка поступивших предложений по уведомлению о начале разработки законопроек...Сводка поступивших предложений по уведомлению о начале разработки законопроек...
Сводка поступивших предложений по уведомлению о начале разработки законопроек...Artem Kozlyuk
 
Cómo generar y gestionar cultura investigativa en el proceso docente
Cómo generar y gestionar cultura investigativa en el proceso docenteCómo generar y gestionar cultura investigativa en el proceso docente
Cómo generar y gestionar cultura investigativa en el proceso docenteVladimir Estrada
 
говорова бумажная пластика
говорова бумажная пластикаговорова бумажная пластика
говорова бумажная пластикаЕлена Исакова
 
Ley de inmigración y colonización n°817
Ley de inmigración y colonización n°817Ley de inmigración y colonización n°817
Ley de inmigración y colonización n°817El Arcón de Clio
 

Andere mochten auch (16)

Topic12 optical fiber
Topic12 optical fiberTopic12 optical fiber
Topic12 optical fiber
 
Topic14 lan
Topic14 lanTopic14 lan
Topic14 lan
 
Topic17 frame relay
Topic17 frame relayTopic17 frame relay
Topic17 frame relay
 
Topic10 coaxial
Topic10 coaxialTopic10 coaxial
Topic10 coaxial
 
AIS Program Brochure with Samples
AIS Program Brochure with SamplesAIS Program Brochure with Samples
AIS Program Brochure with Samples
 
Бизнес-планирование (часть 1 Резюме)
Бизнес-планирование (часть 1 Резюме)Бизнес-планирование (часть 1 Резюме)
Бизнес-планирование (часть 1 Резюме)
 
Крашенинникова О.В. кейс "Анализ данных"
Крашенинникова О.В. кейс "Анализ данных"Крашенинникова О.В. кейс "Анализ данных"
Крашенинникова О.В. кейс "Анализ данных"
 
Durban Port Operators Awarded
Durban Port Operators AwardedDurban Port Operators Awarded
Durban Port Operators Awarded
 
Сводка поступивших предложений по уведомлению о начале разработки законопроек...
Сводка поступивших предложений по уведомлению о начале разработки законопроек...Сводка поступивших предложений по уведомлению о начале разработки законопроек...
Сводка поступивших предложений по уведомлению о начале разработки законопроек...
 
медиа проект
медиа проектмедиа проект
медиа проект
 
Cómo generar y gestionar cultura investigativa en el proceso docente
Cómo generar y gestionar cultura investigativa en el proceso docenteCómo generar y gestionar cultura investigativa en el proceso docente
Cómo generar y gestionar cultura investigativa en el proceso docente
 
бумажная пластика зоря
бумажная пластика зорябумажная пластика зоря
бумажная пластика зоря
 
говорова бумажная пластика
говорова бумажная пластикаговорова бумажная пластика
говорова бумажная пластика
 
па лит. 8 класс
па лит. 8 класспа лит. 8 класс
па лит. 8 класс
 
Ekz
EkzEkz
Ekz
 
Ley de inmigración y colonización n°817
Ley de inmigración y colonización n°817Ley de inmigración y colonización n°817
Ley de inmigración y colonización n°817
 

Kürzlich hochgeladen

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
論文紹介: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...Toru Tamaki
 
論文紹介: 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 Gamesatsushi061452
 
論文紹介: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 UnderstandingToru Tamaki
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 

Kürzlich hochgeladen (10)

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介: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...
 
論文紹介: 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
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 

はじめての正規表現(一般公開版)