文字列として保存されているHTMLコードのページに対して正規表現(1つの変数を含む)を照合しようとしています。
HTML文字列は配列であり、各要素には以下に示すようなものが含まれています。(私は特定のタグで分割しました)。配列の各要素には、家のデータ(名前、平方メートルの量など)が含まれています。もちろん架空のものです。重要なのは、最初のTDタグ間のテキストを照合することで、これらの家の1つだけを照合する必要があり、必要な部分は、フォームの最後のINPUTタグのVALUE(数字)です。
<TR BGCOLOR=#D4C0A1>
<TD WIDTH=40%><NOBR>Luminous Arc 2</NOBR></TD>
<TD WIDTH=10%><NOBR>154 sqm</NOBR></TD>
<TD WIDTH=10%><NOBR>6460 gold</NOBR></TD>
<TD WIDTH=40%><NOBR>rented</NOBR></TD>
<TD><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
<FORM ACTION= METHOD=post><TR><TD>
<INPUT TYPE=hidden NAME=world VALUE=Olympa>
<INPUT TYPE=hidden NAME=town VALUE="Yalahar">
<INPUT TYPE=hidden NAME=state VALUE=>
<INPUT TYPE=hidden NAME=type VALUE=houses>
<INPUT TYPE=hidden NAME=order VALUE=>
<INPUT TYPE=hidden NAME=houseid VALUE=37010>
<INPUT TYPE=image NAME="View" ALT="View" SRC="" BORDER=0 WIDTH=120 HEIGHT=18>
</TD></TR></FORM></TABLE></TD></TR>
次の正規表現を作成しました。
var regex = new RegExp(house + "[\\s\\S]+name=houseid value=([0-9]+)>", "i");
ここhouse
で、は家の名前(この例ではLuminous Arc 2
)であり、必要な部分はhouseid37010
です。
この正規表現は非常にうまく機能し、必要なヒットを与えるはずだと思いましたが、houses[i].match(regex)
毎回nullを返します。文字列に一致するものがありません。
文字列をDOMオブジェクトに変換してTRタグで分割するなど、これまでにいくつかのアプローチを試しました(変換に失敗しました)。身近に感じますが、行き詰まっています。
正規表現が機能しない理由を誰かが理解していますか?
ケネス