by shigemk2

当面は技術的なことしか書かない

2013-04-11から1日間の記事一覧

後方参照

こんなHTMLがあって、bタグもしくはiタグに引っ掛るものをマッチする正規表現を書くとする。 後方参照を使うと<b class="a"><i class="c">b要素の中にi要素がある</i></b>場合でも正しくマッチする <[bi][\s\S]*?>[\s\S]*?</[bi]>って書くと、以下までしかマッチしない。最後のb閉じタグがマッチしない…

最長一致と最短一致

このようなHTMLがあったとして、 <p class="entry">p要素です。</p> .... </html> このHTMLにだけマッチする正規表現を書きたいとする。 <p class="entry"> でも、 <p[\s\S]*>と書いたら、全てのHTMLにマッチしてしまう。\s\Sが全ての文字にマッチするので、 <p>hoge</p><p>fuga</p> の最初のにマッチしてしまうからである。 や*な</p[\s\s]*></p>…

文字列の先頭/最後にマッチ

^と$を使う。An apple falled from the tree.という文章について、 ^AnはAn appleのAnにマッチするし、 tree\.$は、最後のtree.にマッチする。

特殊文字をちょろっと

<tr> <td>hoge</td> <td>fuga</td> </tr> </td>\n<td>だと、最初のとにマッチする。</td>

どれかのパターンにマッチ

(this|that)this か thatにマッチ。 ([Tt]his|[Tt]hat)で、This this That thatのどれかにマッチ。 ([Tt]his|[Tt]hat) (is|was)とする事で複数回利用が可能となる。

否定

a/b/c以外の文字にマッチという風にするなら、 [^abc]と書く。abc abd abeなら、ab[^cd]でabeにマッチする。

文字クラス

「-」の文字を使って、ある範囲に入る全ての文字を指定できる。これを文字クラスという。 [a-zA-Z][0-9]で、a-zか、A-Zのどれか一文字+0-9のどれか一文字という風になる。 A0 とか z8とか。