* U K I Y A H O N P O *
Nel mezzo del cammin di nostra vita mi ritrovai per una selva oscura,
che la diritta via era smarrita.
ホーム
一覧
検索
最終更新
リンク
ヘルプ
新規
リンク
手動リンク
自動相互リンク
駄でべWiki:FrontPage
ヘルプ
整形ルール
プラグインマニュアル
浮子屋商店もよろしく。
正規表現講座/8
をテンプレートにして作成
開始行:
TITLE:間違いだらけの正規表現講座 level 8
#contentsx
* 一気に置き換えろ! [#pd32a649]
さて、とうとう第8回まできました。~
今回は、正規表現を使った置換の方法です。
これを覚えると、テキストの加工が一気に楽になります。~
人手で延々とやってる作業をコンピュータに
一瞬でやらせられる、魔法のような効果を発揮しはじめます。
* 単純な置換 [#j227c995]
さて、置換と言っても、単純な置換だけなら、何も覚えること...
例えば、文章に含まれる、
ぽな
ぽなぽっぽ
ぽなぽっぽっぽ
といった文字列を、全て「Ponapalt」に置換することを考えま...
まずは、マッチする正規表現を考えます。
これはもう、すぐに出てくるのではないでしょうか。
ぽな(ぽっ)*ぽ?
でいいですね。
そうしたら、検索する文字列としてその正規表現を、置換する...
「Ponapalt」を入れて、置換を行えばいいだけです。
正規表現テスターで行う場合は、「正規表現」「置換表現」を...
ように入れて、「置換!」を押してみてください。
&attachref(./regex8.png,nolink);
* だけど… [#p68ca1dd]
ですが、これではあまり面白くないですね。~
検索できる文字列の表現が広がっただけで、置き換え後の文字...
一定の文字列で、応用が利きません。
実は、正規表現で置換を行う場合、置き換え後の文字列の側に...
メタ文字を使うことができます。
それを覚えると、一気に応用が利くようになります。
* まずはおさらい [#c0386fbe]
第4回で学んだ、「まとめて一つ」を表す、
()
この記号。第4回では、この記号には二つの役割があると言い...
-カッコの中の正規表現をまとめて1つの正規表現として扱う(...
-そのまとまった正規表現を、後で使えるように保存しておく(...
第4回で学んだのは「まとめて一つ」、グループ化の役割でし...
今回、「後で使えるように保存しておく」、キャプチャの役割...
* キャプチャしたものを呼び出す [#cbfe574e]
さて、置き換え後の文字列で使えるメタ文字、それは、
「キャプチャしたものを呼び出す」メタ文字です。
$1~$9 キャプチャ1番目~9番目
ここで注意。~
Perlや正規表現テスターでは、「$1」「$2」といった表現を使...
エディタ等によっては、「\1」「\2」といった表現を使う場合...
例えば、EmEditorなどは「\」を使う例です。
使っているエディタのヘルプで、「置換表現」「後方参照」と...
「$」と「\」のどちらを使うのか調べておいてください。
さて、キャプチャしたものを呼び出す、とはどういうことか。
次のような例を考えてみましょう。
<a href="01234.html">へもぐろびん</a>
<a href="56789.html">もののけ</a>
<a href="keno.html">けのけの</a>
<a href="pona.html">ぽなぽな</a>
さて、このテキストから、リンク先のファイル名(01234.html...
抜き出したいとします。置換でやるには、
<a href="01234.html">へもぐろびん</a> → 01234.html
<a href="56789.html">もののけ</a> → 56789.html
<a href="keno.html">けのけの</a> → keno.html
<a href="pona.html">ぽなぽな</a> → pona.html
こんな形で置換できればいいですね。
そのためには、「01234.html」の部分にマッチした文字列をと...
(キャプチャ)、その文字列に置換(呼び出す)すれば良いわ...
まず、検索する正規表現を考えます。
<a href="(.*)">.*</a>
ここで、最初の「.*」にカッコがついていることに注目してく...
検索するだけなら、このカッコは必要ないですね。~
このように書くことによって、このカッコの中にマッチした文...
後で利用できるように保存されます。~
これがキャプチャという意味です。
そして、置換後の文字列として、
$1
と書きます。~
「$1」は「1番目のキャプチャにマッチした文字列」という意...
ここではキャプチャは1個しかありませんから、先ほどの保存...
表すことになります。
正規表現テスターを立ち上げ、実際にやってみてください。~
おっと、オプションでシングルラインモードをOFF
(『「.」が改行にもマッチする』を外す)にしておくのを忘れ...
&attachref(./regex8-2.png,nolink);
* 応用 [#b460311f]
では、応用編です。
先ほどの例文を、
へもぐろびん,01234.html
もののけ,56789.html
けのけの,keno.html
ぽなぽな,pona.html
とするにはどのようにすればよいでしょうか。~
キャプチャを2つ使えば解決します。~
少し考えてみてください。
答えは、
正規表現:<a href="(.*)">(.*)</a>
置換表現:$2,$1
こうなります。
「$1」「$2」が、それぞれ、1番目、2番目に出てきたカッコと~
対応しているわけです。~
それを使う順序は、カッコの順序と一致していなくてもいいわ...
「,」は単なる普通の文字です。
このように、普通の文字とキャプチャをうまく組み合わせるこ...
文章から特定の部位を抜き出したり、加工したりといったこと...
正規表現を使わないと、このような置換は無理ですよね。
* ちょっと脱線 [#b46a5a67]
今回、慣れないとちょっとややこしいかもしれませんが、如何...
キャプチャを使った置換を覚えると、正規表現の力を感じるこ...
できるのではないかと思います。
* ご指摘などはこちらへ [#b35b5afb]
#comment
終了行:
TITLE:間違いだらけの正規表現講座 level 8
#contentsx
* 一気に置き換えろ! [#pd32a649]
さて、とうとう第8回まできました。~
今回は、正規表現を使った置換の方法です。
これを覚えると、テキストの加工が一気に楽になります。~
人手で延々とやってる作業をコンピュータに
一瞬でやらせられる、魔法のような効果を発揮しはじめます。
* 単純な置換 [#j227c995]
さて、置換と言っても、単純な置換だけなら、何も覚えること...
例えば、文章に含まれる、
ぽな
ぽなぽっぽ
ぽなぽっぽっぽ
といった文字列を、全て「Ponapalt」に置換することを考えま...
まずは、マッチする正規表現を考えます。
これはもう、すぐに出てくるのではないでしょうか。
ぽな(ぽっ)*ぽ?
でいいですね。
そうしたら、検索する文字列としてその正規表現を、置換する...
「Ponapalt」を入れて、置換を行えばいいだけです。
正規表現テスターで行う場合は、「正規表現」「置換表現」を...
ように入れて、「置換!」を押してみてください。
&attachref(./regex8.png,nolink);
* だけど… [#p68ca1dd]
ですが、これではあまり面白くないですね。~
検索できる文字列の表現が広がっただけで、置き換え後の文字...
一定の文字列で、応用が利きません。
実は、正規表現で置換を行う場合、置き換え後の文字列の側に...
メタ文字を使うことができます。
それを覚えると、一気に応用が利くようになります。
* まずはおさらい [#c0386fbe]
第4回で学んだ、「まとめて一つ」を表す、
()
この記号。第4回では、この記号には二つの役割があると言い...
-カッコの中の正規表現をまとめて1つの正規表現として扱う(...
-そのまとまった正規表現を、後で使えるように保存しておく(...
第4回で学んだのは「まとめて一つ」、グループ化の役割でし...
今回、「後で使えるように保存しておく」、キャプチャの役割...
* キャプチャしたものを呼び出す [#cbfe574e]
さて、置き換え後の文字列で使えるメタ文字、それは、
「キャプチャしたものを呼び出す」メタ文字です。
$1~$9 キャプチャ1番目~9番目
ここで注意。~
Perlや正規表現テスターでは、「$1」「$2」といった表現を使...
エディタ等によっては、「\1」「\2」といった表現を使う場合...
例えば、EmEditorなどは「\」を使う例です。
使っているエディタのヘルプで、「置換表現」「後方参照」と...
「$」と「\」のどちらを使うのか調べておいてください。
さて、キャプチャしたものを呼び出す、とはどういうことか。
次のような例を考えてみましょう。
<a href="01234.html">へもぐろびん</a>
<a href="56789.html">もののけ</a>
<a href="keno.html">けのけの</a>
<a href="pona.html">ぽなぽな</a>
さて、このテキストから、リンク先のファイル名(01234.html...
抜き出したいとします。置換でやるには、
<a href="01234.html">へもぐろびん</a> → 01234.html
<a href="56789.html">もののけ</a> → 56789.html
<a href="keno.html">けのけの</a> → keno.html
<a href="pona.html">ぽなぽな</a> → pona.html
こんな形で置換できればいいですね。
そのためには、「01234.html」の部分にマッチした文字列をと...
(キャプチャ)、その文字列に置換(呼び出す)すれば良いわ...
まず、検索する正規表現を考えます。
<a href="(.*)">.*</a>
ここで、最初の「.*」にカッコがついていることに注目してく...
検索するだけなら、このカッコは必要ないですね。~
このように書くことによって、このカッコの中にマッチした文...
後で利用できるように保存されます。~
これがキャプチャという意味です。
そして、置換後の文字列として、
$1
と書きます。~
「$1」は「1番目のキャプチャにマッチした文字列」という意...
ここではキャプチャは1個しかありませんから、先ほどの保存...
表すことになります。
正規表現テスターを立ち上げ、実際にやってみてください。~
おっと、オプションでシングルラインモードをOFF
(『「.」が改行にもマッチする』を外す)にしておくのを忘れ...
&attachref(./regex8-2.png,nolink);
* 応用 [#b460311f]
では、応用編です。
先ほどの例文を、
へもぐろびん,01234.html
もののけ,56789.html
けのけの,keno.html
ぽなぽな,pona.html
とするにはどのようにすればよいでしょうか。~
キャプチャを2つ使えば解決します。~
少し考えてみてください。
答えは、
正規表現:<a href="(.*)">(.*)</a>
置換表現:$2,$1
こうなります。
「$1」「$2」が、それぞれ、1番目、2番目に出てきたカッコと~
対応しているわけです。~
それを使う順序は、カッコの順序と一致していなくてもいいわ...
「,」は単なる普通の文字です。
このように、普通の文字とキャプチャをうまく組み合わせるこ...
文章から特定の部位を抜き出したり、加工したりといったこと...
正規表現を使わないと、このような置換は無理ですよね。
* ちょっと脱線 [#b46a5a67]
今回、慣れないとちょっとややこしいかもしれませんが、如何...
キャプチャを使った置換を覚えると、正規表現の力を感じるこ...
できるのではないかと思います。
* ご指摘などはこちらへ [#b35b5afb]
#comment
ページ名: