したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | メール | |

htmltodatサポートスレッド

615 ◆/vmukiyuzw:2010/12/28(火) 20:44:50
>>614さん
簡単に言うと、カッコでくくられた部分が順番に$1〜の番号が振られます。
但し、「(?:」で始まるものは番号が振られません。
具体的には、regexps.txtにある「DAT2HTML0.26」を例にとって説明すると

m#<DT>(?:<A.*?>)?([0-9]+).+?(?:<A HREF="mailto:(.+?)">)?<b>(.*?)</B>(?:</A>|</FONT>) ?:(.*?)<DD>(.*)<BR><BR>#mik

・最初のカッコ(?:<A.*?>) → <DT>の直後にある<A 〜>にマッチ。これはグループ化したいためだけのカッコであり、番号を
振りたくないので(?:で始まります
・2番目のカッコ([0-9]+) → その直後にある数字の一回以上の繰り返し(レス番号)にマッチ、これが$1になります
・3番目のカッコ(?:<A HREF="mailto: → これも最初のカッコと同じ理由で(?:なので番号は振られません
・4番目のカッコ(.+?) → カッコが入れ子になってて若干分かりにくいかもしれませんがメール欄にマッチ、これが$2になります
(3番目のカッコの中なので実際には何にもマッチしない場合があるのですがその場合$2は空となります)
・5番目のカッコ(.*?) → <b>と</B>の間にあるので名前欄にマッチ、これが$3になります
・6番目のカッコ(?:</A>|</FONT>) → 名前欄のあとに</A>または</FONT>が来る、ここはメール欄が空かどうかによって
変わってくるのでor表現を使っています。or表現にしたいためだけのカッコなので(?:にして番号を振りません
・7番目のカッコ(.*?) → その後の:の次に投稿日・IDがくるのでそれにマッチ、これが$4になります
・8番目のカッコ(.*) → <DD>と<BR><BR>の間にあるものが本文でそれにマッチ、これが$5になります

うわいざ文章で説明するとなると難しい〜^^;
実際のHTMLと見比べながらだともっと分かりやすいかもしれません。

# 正規表現自体について書き出すとreadme程度では書ききれませんし
# ネット上にいくらでも解説があるので省略したのですが


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板