掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ダブルクォーテーションの正規表現 (ID:143351)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>># キャプチャである程度は短くなりますが……。 > ぜひご教授下さい。自分にとってかなりの核心な部分です。 二重引用符の有無だけの違いで,判定対象が倍になっていますよね。 それをまとめる方法になります。 まず, > <TD align=right bgcolor="#202020"> と > <TD align=right bgcolor=#202020> から。 ・キャプチャ ref) グループ化構成体 http://msdn.microsoft.com/ja-jp/library/bs2twtah ・前方参照 ref) 前方参照構成体 http://msdn.microsoft.com/ja-jp/library/thwdfzxy まず,単純に"の有無だけを無視する正規表現を書きます。 <TD align=right bgcolor="?#202020"?> たぶん,これはわかると思います。 しかし,これでは, <TD align=right bgcolor="#202020> や <TD align=right bgcolor=#202020"> を許容してしまいます。#202020の前と後ろの二重引用符は「ある」か「ない」かです。 この時,#202020の前後には ・両方とも空文字列がある ・両方とも二重引用符がある のどちらかとみなすことができますので,これをキャプチャと前方参照を使って表現します。 <TD align=right bgcolor=("?)#202020\1> この()がキャプチャで,\1は「先頭から1番目の開き括弧のキャプチャと同じ文字列」を意味します。 この時,0番目のキャプチャはマッチした全文を意味するため,最初の(の場所は\1になります。 もう一方も同じですから, > (<TD align=right bgcolor="#202020">|<TD align=right bgcolor=#202020>|<TD bgcolor="#202020" align=right>|<TD bgcolor=#202020 align=right>) は, (<TD align=right bgcolor=("?)#202020\2>|<TD bgcolor=("?)#202020\3 align=right>) となります。 キャプチャは置換でも使える ($0, $1, ...) ので,覚えておくとよいかと思います。 なお,(?<aaa>などと名前を付けて,\{aaa}や${aaa}と参照する方法もあります。 Groupsプロパティで使うキャプチャには,名前を付けた方がわかりやすいでしょう。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.