* 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.
Front page
List of pages
Search
Recent changes
リンク
Help
New
リンク
手動リンク
自動相互リンク
駄でべWiki:FrontPage
Help
整形ルール
プラグインマニュアル
浮子屋商店もよろしく。
create a new page, using
正規表現講座/8
as a template.
Start:
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
End:
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
Page: