「正規表現 課題集」の版間の差分

提供:Wiki@KDS
ナビゲーションに移動 検索に移動
編集の要約なし
編集の要約なし
 
(同じ利用者による、間の11版が非表示)
2行目: 2行目:
==基本編==
==基本編==


<div class="section">
===問題 1-1===
===問題 1-1===
<div class="section">
<dl>
<dl>
<dt>文字列</dt>
<dt>文字列</dt>
11行目: 11行目:
</pre>
</pre>
</dd>
</dd>
<dt>対象</dt>
<dt>内容</dt>
<dd>全ての文字を1文字ずつaに変える</dd>
<dd>全ての文字を1文字ずつaに変える</dd>
<dt>結果</dt>
<dt>結果</dt>
17行目: 17行目:
<pre>
<pre>
aaaaaaaaaaaaa
aaaaaaaaaaaaa
</pre>
</dd>
<dt class="answer-title">解答[表示]</dt>
<dd class="answer">
<pre>
.
a
</pre>
</pre>
</dd>
</dd>
23行目: 31行目:




<div class="section">
===問題 1-2===
===問題 1-2===
<div class="section">
<dl>
<dl>
<dt>文字列</dt>
<dt>文字列</dt>
32行目: 40行目:
</pre>
</pre>
</dd>
</dd>
<dt>対象</dt>
<dt>内容</dt>
<dd>文字列をaに変える</dd>
<dd>3桁の数字をhitに変える</dd>
<dt>結果</dt>
<dt>結果</dt>
<dd class="txt-data">
<dd class="txt-data">
<pre>
<pre>
a
abchitdefあいうえお
</pre>
</dd>
<dt class="answer-title">解答[表示]</dt>
<dd class="answer">
<pre>
\d{3}
hit
</pre>
</pre>
</dd>
</dd>
44行目: 60行目:




<div class="section">
===問題 1-3===
===問題 1-3===
<dl>
<dt>文字列</dt>
<dd class="txt-data">
<pre>
abc123abc123abc123
</pre>
</dd>
<dt>内容</dt>
<dd>最初のabcだけをdefに変える</dd>
<dt>結果</dt>
<dd class="txt-data">
<pre>
def123abc123abc123
</pre>
</dd>
<dt class="answer-title">解答[表示]</dt>
<dd class="answer">
<pre>
^abc
def
</pre>
</dd>
</dl>
</div>
<div class="section">
<div class="section">
===問題 1-4===
<dl>
<dl>
<dt>文字列</dt>
<dt>文字列</dt>
51行目: 96行目:
<pre>
<pre>
abc123defあいうえお
abc123defあいうえお
あいうえおabc123def
abc123defあいうえお
</pre>
</dd>
<dt>内容</dt>
<dd>abcから始まる行をABCに変える</dd>
<dt>結果</dt>
<dd class="txt-data">
<pre>
ABC
あいうえおabc123def
ABC
</pre>
</dd>
<dt class="answer-title">解答[表示]</dt>
<dd class="answer">
<pre>
^abc.*$
ABC
</pre>
</dd>
</dl>
</div>
<div class="section">
===問題 1-5===
<dl>
<dt>文字列</dt>
<dd class="txt-data">
<pre>
line1
line2
line3
</pre>
</dd>
<dt>内容</dt>
<dd>/で一行に連結する</dd>
<dt>結果</dt>
<dd class="txt-data">
<pre>
line1/line2/line3
</pre>
</dd>
<dt class="answer-title">解答[表示]</dt>
<dd class="answer">
<pre>
(\r\n|\r|\n)
/
</pre>
</dd>
</dl>
</div>
<div class="section">
===問題 1-6===
<dl>
<dt>文字列</dt>
<dd class="txt-data">
<pre>
佃煮・漬物
調味料・だし
おかず・おつまみ その他
魚介・海産物
乾物・お茶・デザート
肉・ソーセージ
</pre>
</dd>
<dt>内容</dt>
<dd>行頭に「味百選>アイテムから探す>」を足す</dd>
<dt>結果</dt>
<dd class="txt-data">
<pre>
味百選>アイテムから探す>佃煮・漬物
味百選>アイテムから探す>調味料・だし
味百選>アイテムから探す>おかず・おつまみ その他
味百選>アイテムから探す>魚介・海産物
味百選>アイテムから探す>乾物・お茶・デザート
味百選>アイテムから探す>肉・ソーセージ
</pre>
</dd>
<dt class="answer-title">解答[表示]</dt>
<dd class="answer">
<pre>
^
味百選>アイテムから探す>
</pre>
</dd>
</dl>
</div>
<div class="section">
===問題 1-7===
<dl>
<dt>文字列</dt>
<dd class="txt-data">
<pre>
if(val > 5){
i=12;
}
</pre>
</dd>
<dt>内容</dt>
<dd>行末のタブのみ削除</dd>
<dt>結果</dt>
<dd class="txt-data">
<pre>
if(val > 5){
i=12;
}
</pre>
</dd>
<dt class="answer-title">解答[表示]</dt>
<dd class="answer">
<pre>
\t*$
</pre>
</dd>
</dl>
</div>
==グルーピング編==
<div class="section">
===問題 2-1===
<dl>
<dt>文字列</dt>
<dd class="txt-data">
<pre>
番号1
81064
番号2
81079
番号3
81080
番号4
81081
番号5
81082
</pre>
</dd>
<dt>内容</dt>
<dd>数字を全て9桁にする(頭を0で埋める)</dd>
<dt>結果</dt>
<dd class="txt-data">
<pre>
番号1
000081064
番号2
000081079
番号3
000081080
番号4
000081081
番号5
000081082
</pre>
</dd>
<dt class="answer-title">解答[表示]</dt>
<dd class="answer">
<pre>
(\d{5})
0000$1
================
^(\d)
0000$1
</pre>
</dd>
</dl>
</div>
<div class="section">
===問題 2-2===
<dl>
<dt>文字列</dt>
<dd class="txt-data">
<pre>
<p><a href="http://www.foo.example.com/">"まとめサイト"</a></p>
</pre>
</dd>
<dt>内容</dt>
<dd>href要素がどんなURLでも、http://192.168.200.60:16080/kds_tko/に置き換える処理</dd>
<dt>結果</dt>
<dd class="txt-data">
<pre>
<p><a href="http://192.168.200.60:16080/kds_tko/">"まとめサイト"</a></p>
</pre>
</dd>
<dt class="answer-title">解答[表示]</dt>
<dd class="answer">
<pre>
href="[^"]*"
href="http://192.168.200.60:16080/kds_tko/"
</pre>
</dd>
</dl>
</div>
<div class="section">
===問題 2-3===
<dl>
<dt>文字列</dt>
<dd class="txt-data">
<pre>
タカシマヤ
三越
伊勢丹
高島屋
</pre>
</dd>
<dt>内容</dt>
<dd>「高島屋」と「タカシマヤ」の後に「オンラインショッピング」を加える</dd>
<dt>結果</dt>
<dd class="txt-data">
<pre>
タカシマヤオンラインショッピング
三越
伊勢丹
高島屋オンラインショッピング
</pre>
</dd>
<dt class="answer-title">解答[表示]</dt>
<dd class="answer">
<pre>
(タカシマヤ|高島屋)
$1オンラインショッピング
</pre>
</dd>
</dl>
</div>
==否定の先読み・否定の戻り読み編==
<div class="section">
===問題 3-1===
<dl>
<dt>文字列</dt>
<dd class="txt-data">
<pre>
高島屋
高島屋通信販売
</pre>
</dd>
<dt>内容</dt>
<dd>高島屋のみをタカシマヤに変換する</dd>
<dt>結果</dt>
<dd class="txt-data">
<pre>
タカシマヤ
高島屋通信販売
</pre>
</dd>
<dt class="answer-title">解答[表示]</dt>
<dd class="answer">
<pre>
高島屋(?!通信販売)
タカシマヤ
</pre>
</dd>
</dl>
</div>
<div class="section">
===問題 3-2===
<dl>
<dt>文字列</dt>
<dd class="txt-data">
<pre>
佃煮・漬物
調味料・だし
おかず・おつまみ その他
魚介・海産物
乾物・お茶・デザート
 
肉・ソーセージ
</pre>
</dd>
<dt>内容</dt>
<dd>テキスト部分のみ、行頭に「味百選>アイテムから探す>」を足す(タブ、半角・全角スペース、改行のみの行がある場合)</dd>
<dt>結果</dt>
<dd class="txt-data">
<pre>
味百選>アイテムから探す>佃煮・漬物
味百選>アイテムから探す>調味料・だし
味百選>アイテムから探す>おかず・おつまみ その他
味百選>アイテムから探す>魚介・海産物
味百選>アイテムから探す>乾物・お茶・デザート
 
味百選>アイテムから探す>肉・ソーセージ
</pre>
</dd>
<dt class="answer-title">解答[表示]</dt>
<dd class="answer">
<pre>
^(?![\t\r\n\s ])
味百選>アイテムから探す>
</pre>
</dd>
</dl>
</div>
<div class="section">
===問題 3-3===
<dl>
<dt>文字列</dt>
<dd class="txt-data">
<pre>
■名前
初音ミク
■住所
高山くんち
■電話番号
110-119-117
</pre>
</dd>
<dt>内容</dt>
<dd>■から始まる行以外を【】で囲う</dd>
<dt>結果</dt>
<dd class="txt-data">
<pre>
■名前
【初音ミク】
■住所
【高山くんち】
■電話番号
【110-119-117】
</pre>
</pre>
</dd>
</dd>
<dt>対象</dt>
<dt class="answer-title">解答[表示]</dt>
<dd>123をhitに変える(123は数字3文字として考える)</dd>
<dd class="answer">
<pre>
^((?:(?!■).)*)$
【$1】
================
※サクラエディタで試す場合は
^((?:(?!■).)*)\r\n
【$1】\r\n
</pre>
</dd>
</dl>
</div>
 
 
<div class="section">
===問題 3-4===
<dl>
<dt>文字列</dt>
<dd class="txt-data">
<pre>
&lt;div class="campaign"&gt;
&lt;dl class="clearfix"&gt;
  &lt;dt&gt;&lt;img src="top/img/icon_campaign.gif" width="52" height="13" alt="キェンペーン" title=""&gt;&lt;/dt&gt;
  &lt;dd class="date"&gt;2007年10月17日&lt;/dd&gt;
  &lt;dd&gt;&lt;a href="/shopping/campaign/index.html"&gt;「高島屋のお歳暮」オープン。人気のバッグを始め、各種お買上げキャンペーン実施中。&lt;/a&gt;&lt;/dd&gt;
&lt;/dl&gt;
&lt;dl class="clearfix"&gt;
  &lt;dt&gt;&lt;img src="top/img/icon_campaign.gif" width="52" height="13" alt="キェンペーン" title=""&gt;&lt;/dt&gt;
 
  &lt;dd class="date"&gt;2007年10月17日&lt;/dd&gt;
  &lt;dd&gt;&lt;a href="/shopping/campaign/index.html"&gt;「魍魎の匣」・「サーフズ・アップ」特別鑑賞券プレゼントキャンペーン実施中。&lt;/a&gt;&lt;/dd&gt;
&lt;/dl&gt;
&lt;dl class="clearfix"&gt;
  &lt;dt&gt;&lt;img src="top/img/icon_news.gif" width="52" height="13" alt="お知らせ" title=""&gt;&lt;/dt&gt;
  &lt;dd class="date"&gt;2007年10月17日&lt;/dd&gt;
  &lt;dd&gt;&lt;a href="/shopping/guide/member/index2.html#member12"&gt;ギフトお申し込み履歴サービス ・お届け先 事前登録代行サービスをご利用いただけます。&lt;/a&gt;&lt;/dd&gt;
 
&lt;/dl&gt;
&lt;p class="to-list"&gt;&lt;img src="common/img/arrow_red.gif" width="8" height="9" alt="" title=""&gt;&lt;a href="campaign/index.html?shoptop"&gt;キャンペーン・お知らせ一覧へ&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
</pre>
</dd>
<dt>内容</dt>
<dd>href属性を含まない行は削除する</dd>
<dt>結果</dt>
<dt>結果</dt>
<dd class="txt-data">
<dd class="txt-data">
<pre>
<pre>
abchitdefあいうえお
  &lt;dd&gt;&lt;a href="/shopping/campaign/index.html"&gt;「高島屋のお歳暮」オープン。人気のバッグを始め、各種お買上げキャンペーン実施中。&lt;/a&gt;&lt;/dd&gt;
  &lt;dd&gt;&lt;a href="/shopping/campaign/index.html"&gt;「魍魎の匣」・「サーフズ・アップ」特別鑑賞券プレゼントキャンペーン実施中。&lt;/a&gt;&lt;/dd&gt;
  &lt;dd&gt;&lt;a href="/shopping/guide/member/index2.html#member12"&gt;ギフトお申し込み履歴サービス ・お届け先 事前登録代行サービスをご利用いただけます。&lt;/a&gt;&lt;/dd&gt;
&lt;p class="to-list"&gt;&lt;img src="common/img/arrow_red.gif" width="8" height="9" alt="" title=""&gt;&lt;a href="campaign/index.html?shoptop"&gt;キャンペーン・お知らせ一覧へ&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
</pre>
</dd>
<dt class="answer-title">解答[表示]</dt>
<dd class="answer">
<pre>
^(?:(?!href=").)*$
 
================
※サクラエディタで試す場合は
^(?:(?!href=").)*\r\n
</pre>
</pre>
</dd>
</dd>
65行目: 522行目:




===問題 1-4===
==応用編==
<div class="section">
<div class="section">
===問題 4-1===
<dl>
<dl>
<dt>文字列</dt>
<dt>文字列</dt>
<dd class="txt-data">
<dd class="txt-data">
<pre>
<pre>
abc123abc123abc123
00000166 00004234 00003465 00003468 00000168 00004300
00000168 00004234 00004204 00003468 00004202 00004300
0555658
00000168 00004234 00004204 00003468 00004202 00004300
00000168 00004234 00004204 00003468 00004202 00004300
441 ファッション>ブランド>ダーウィン
00000441 ファッション>ブランド>ラガシャ 3321
00000426 ファッション>ブランド>ワンダーブラ
</pre>
</pre>
</dd>
</dd>
<dt>対象</dt>
<dt>内容</dt>
<dd>最初のabcだけをdefに変える</dd>
<dd>タブ区切りの数値の中で、7桁未満の数値をhitに置換する</dd>
<dt>結果</dt>
<dt>結果</dt>
<dd class="txt-data">
<dd class="txt-data">
<pre>
<pre>
def123abc123abc123
00000166 00004234 00003465 00003468 00000168 00004300
00000168 00004234 00004204 00003468 00004202 00004300
hit
00000168 00004234 00004204 00003468 00004202 00004300
00000168 00004234 00004204 00003468 00004202 00004300
hit ファッション>ブランド>ダーウィン
00000441 ファッション>ブランド>ラガシャ hit
00000426 ファッション>ブランド>ワンダーブラ
</pre>
</dd>
<dt class="answer-title">解答[表示]</dt>
<dd class="answer">
<pre>
\b\d((?!\d{7})(?!\t).)+
hit
</pre>
</pre>
</dd>
</dd>
85行目: 565行目:
</div>
</div>


==上級編(複数回置換)==
<!-- template
<div class="section">
===問題 1-1===
<dl>
<dt>文字列</dt>
<dd class="txt-data">
<pre>
before
</pre>
</dd>
<dt>内容</dt>
<dd></dd>
<dt>結果</dt>
<dd class="txt-data">
<pre>
after
</pre>
</dd>
<dt class="answer-title">解答[表示]</dt>
<dd class="answer">
<pre>
match
replace
</pre>
</dd>
</dl>
</div>
-->


</div>
</div>

2007年10月18日 (木) 16:08時点における最新版

基本編

問題 1-1

文字列
abc123defあいうえお
内容
全ての文字を1文字ずつaに変える
結果
aaaaaaaaaaaaa
解答[表示]
.
↓
a


問題 1-2

文字列
abc123defあいうえお
内容
3桁の数字をhitに変える
結果
abchitdefあいうえお
解答[表示]
\d{3}
↓
hit


問題 1-3

文字列
abc123abc123abc123
内容
最初のabcだけをdefに変える
結果
def123abc123abc123
解答[表示]
^abc
↓
def


問題 1-4

文字列
abc123defあいうえお
あいうえおabc123def
abc123defあいうえお
内容
abcから始まる行をABCに変える
結果
ABC
あいうえおabc123def
ABC
解答[表示]
^abc.*$
↓
ABC


問題 1-5

文字列
line1
line2
line3
内容
/で一行に連結する
結果
line1/line2/line3
解答[表示]
(\r\n|\r|\n)
↓
/


問題 1-6

文字列
佃煮・漬物
調味料・だし
おかず・おつまみ その他
魚介・海産物
乾物・お茶・デザート
肉・ソーセージ
内容
行頭に「味百選>アイテムから探す>」を足す
結果
味百選>アイテムから探す>佃煮・漬物
味百選>アイテムから探す>調味料・だし
味百選>アイテムから探す>おかず・おつまみ その他
味百選>アイテムから探す>魚介・海産物
味百選>アイテムから探す>乾物・お茶・デザート
味百選>アイテムから探す>肉・ソーセージ
解答[表示]
^
↓
味百選>アイテムから探す>


問題 1-7

文字列
	if(val > 5){	
		i=12;		
	}
内容
行末のタブのみ削除
結果
	if(val > 5){
		i=12;
	}
解答[表示]
\t*$
↓


グルーピング編

問題 2-1

文字列
番号1
81064
番号2
81079
番号3
81080
番号4
81081
番号5
81082
内容
数字を全て9桁にする(頭を0で埋める)
結果
番号1
000081064
番号2
000081079
番号3
000081080
番号4
000081081
番号5
000081082
解答[表示]
(\d{5})
↓
0000$1
================
^(\d)
↓
0000$1


問題 2-2

文字列
<p><a href="http://www.foo.example.com/">"まとめサイト"</a></p>
内容
href要素がどんなURLでも、http://192.168.200.60:16080/kds_tko/に置き換える処理
結果
<p><a href="http://192.168.200.60:16080/kds_tko/">"まとめサイト"</a></p>
解答[表示]
href="[^"]*"
↓
href="http://192.168.200.60:16080/kds_tko/"


問題 2-3

文字列
タカシマヤ
三越
伊勢丹
高島屋
内容
「高島屋」と「タカシマヤ」の後に「オンラインショッピング」を加える
結果
タカシマヤオンラインショッピング
三越
伊勢丹
高島屋オンラインショッピング
解答[表示]
(タカシマヤ|高島屋)
↓
$1オンラインショッピング

否定の先読み・否定の戻り読み編

問題 3-1

文字列
高島屋
高島屋通信販売
内容
高島屋のみをタカシマヤに変換する
結果
タカシマヤ
高島屋通信販売
解答[表示]
高島屋(?!通信販売)
↓
タカシマヤ


問題 3-2

文字列
佃煮・漬物
 
調味料・だし

おかず・おつまみ その他
魚介・海産物
	
乾物・お茶・デザート
 

肉・ソーセージ
内容
テキスト部分のみ、行頭に「味百選>アイテムから探す>」を足す(タブ、半角・全角スペース、改行のみの行がある場合)
結果
味百選>アイテムから探す>佃煮・漬物
 
味百選>アイテムから探す>調味料・だし

味百選>アイテムから探す>おかず・おつまみ その他
味百選>アイテムから探す>魚介・海産物
	
味百選>アイテムから探す>乾物・お茶・デザート
 

味百選>アイテムから探す>肉・ソーセージ
解答[表示]
^(?![\t\r\n\s ])
↓
味百選>アイテムから探す>


問題 3-3

文字列
■名前
初音ミク
■住所
高山くんち
■電話番号
110-119-117
内容
■から始まる行以外を【】で囲う
結果
■名前
【初音ミク】
■住所
【高山くんち】
■電話番号
【110-119-117】
解答[表示]
^((?:(?!■).)*)$
↓
【$1】
================
※サクラエディタで試す場合は
^((?:(?!■).)*)\r\n
↓
【$1】\r\n


問題 3-4

文字列
<div class="campaign">
 <dl class="clearfix">
  <dt><img src="top/img/icon_campaign.gif" width="52" height="13" alt="キェンペーン" title=""></dt>
  <dd class="date">2007年10月17日</dd>
  <dd><a href="/shopping/campaign/index.html">「高島屋のお歳暮」オープン。人気のバッグを始め、各種お買上げキャンペーン実施中。</a></dd>
 </dl>
 <dl class="clearfix">
  <dt><img src="top/img/icon_campaign.gif" width="52" height="13" alt="キェンペーン" title=""></dt>

  <dd class="date">2007年10月17日</dd>
  <dd><a href="/shopping/campaign/index.html">「魍魎の匣」・「サーフズ・アップ」特別鑑賞券プレゼントキャンペーン実施中。</a></dd>
 </dl>
 <dl class="clearfix">
  <dt><img src="top/img/icon_news.gif" width="52" height="13" alt="お知らせ" title=""></dt>
  <dd class="date">2007年10月17日</dd>
  <dd><a href="/shopping/guide/member/index2.html#member12">ギフトお申し込み履歴サービス ・お届け先 事前登録代行サービスをご利用いただけます。</a></dd>

 </dl>
 <p class="to-list"><img src="common/img/arrow_red.gif" width="8" height="9" alt="" title=""><a href="campaign/index.html?shoptop">キャンペーン・お知らせ一覧へ</a></p>
</div>
内容
href属性を含まない行は削除する
結果
  <dd><a href="/shopping/campaign/index.html">「高島屋のお歳暮」オープン。人気のバッグを始め、各種お買上げキャンペーン実施中。</a></dd>
  <dd><a href="/shopping/campaign/index.html">「魍魎の匣」・「サーフズ・アップ」特別鑑賞券プレゼントキャンペーン実施中。</a></dd>
  <dd><a href="/shopping/guide/member/index2.html#member12">ギフトお申し込み履歴サービス ・お届け先 事前登録代行サービスをご利用いただけます。</a></dd>
 <p class="to-list"><img src="common/img/arrow_red.gif" width="8" height="9" alt="" title=""><a href="campaign/index.html?shoptop">キャンペーン・お知らせ一覧へ</a></p>
</div>
解答[表示]
^(?:(?!href=").)*$
↓

================
※サクラエディタで試す場合は
^(?:(?!href=").)*\r\n


応用編

問題 4-1

文字列
00000166	00004234	00003465	00003468	00000168	00004300			
00000168	00004234	00004204	00003468	00004202	00004300			
0555658
00000168	00004234	00004204	00003468	00004202	00004300			
00000168	00004234	00004204	00003468	00004202	00004300			
441	ファッション>ブランド>ダーウィン							
00000441	ファッション>ブランド>ラガシャ	3321							
00000426	ファッション>ブランド>ワンダーブラ							
内容
タブ区切りの数値の中で、7桁未満の数値をhitに置換する
結果
00000166	00004234	00003465	00003468	00000168	00004300			
00000168	00004234	00004204	00003468	00004202	00004300			
hit
00000168	00004234	00004204	00003468	00004202	00004300			
00000168	00004234	00004204	00003468	00004202	00004300			
hit	ファッション>ブランド>ダーウィン							
00000441	ファッション>ブランド>ラガシャ	hit							
00000426	ファッション>ブランド>ワンダーブラ							
解答[表示]
\b\d((?!\d{7})(?!\t).)+
↓
hit


上級編(複数回置換)