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

htmltodatサポートスレッド

554 ◆/vmukiyuzw:2008/06/20(金) 20:33:08
# 皆様早起きですねえ

ところで、>>548

> で、名前欄へのマッチパターンの推奨としてはシンプルに<b>(.*)</b> ←最長一致にする(*に?をつけない)のがミソ

とか書いちゃったんですが、実際には自分が書いてる正規表現では
最短一致を使ってました。実はあまり意識してなかったんですが。

なんで最短一致でもうまくいくか考えてみると。
例えば「DAT2HTML0.26」だと、マッチさせるhtml側のパターンは

<b>名前</b></a>

もしくは

<b>名前</b></font>

のように、名前欄の後の</b>の後にさらにマッチさせるべき要素が存在します。
で、これに対する正規表現としては

<b>.*?</b>(?:</a>|</font>)

のようにすれば、たとえトリップ等で名前欄の途中に他の</b>があったとしても、
後続に</a>や</font>がないので読み飛ばされて、正しく意図した</b>にマッチしてくれる
ということのようです。

また、
・改行コードなしのベターっとしたhtmlの場合、最長一致だと破綻する
 (最近あまり見かけないですが、一時期のread.cgiがこういうhtmlを吐いていたんです。
 「read.cgi7.00?」の本文欄へのマッチが最短一致になっているのはそのためです)
・最長最短どちらでも適用可能な場合、処理コストは最短一致のほうが少ないはず
という考えもあります。

というわけで>>548での上記発言(最長一致を推奨)は撤回させてください。


新着レスの表示


名前: E-mail(省略可)

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

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

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

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