ActionScript の正規表現あれこれ

愛すべき正規表現の話。

XML オブジェクトに HTML ソースを突っ込んじゃうとエラーになるので、ソースの先頭に<?xml ~ ?> というタグが在るかどうかをチェックして、あれば XML ソースと判断しようかと。

Perl で書けば(取得したソースが、変数 $patternText に格納されているとすれば)、

if ($patternText =~ /<\?xml.*?\?>/s) {
 <処理>
}

という正規表現でバッチリだ。(/^<\?xml\s.*?\s\?>/s とした方が良いかもね~。ま、今回はテストなので、あまり厳密にならないように:-P)

これをそのまま、RegExp のオブジェクトとして、

var xmlPattern:RegExp = new RegExp("<\?xml.*?\?>", "s");
var matchText:String = xmlPattern.exec(patternText);

と書いてみたんだけど、全然マッチしねえの。(^^;
でも、

var xmlPattern:RegExp = /<\?xml.*?\?>/s;

って書くとマッチするなあ。つーか、この方が書きやすいし。
matchText にもちゃんとマッチした文字列として <?xml version="1.0" encoding="utf-8" ?> がセットされてるし、ばっちしじゃん。

ああ、ActionScript 3.0 コンポーネントリファレンスガイドに記述があった。
「ストリングリテラルの中では、単一の円記号として認識されるためには二重に円記号を入力する必要がある」だって。

確かに、

var xmlPattern:RegExp = new RegExp("<\\?xml.*?\\?>", "s");

と書いたら、ばっちりヒットしたわ。
ま、でも、//s な書き方の方がしっくりくるので、こういう書き方はもう二度としないだろうなあ。

トラックバック(0)

このブログ記事を参照しているブログ一覧: ActionScript の正規表現あれこれ

このブログ記事に対するトラックバックURL: https://blog.netandfield.com/mt/mt-tb.cgi/369

コメントする

このブログ記事について

このページは、shinodaが2009年1月30日 02:35に書いたブログ記事です。

ひとつ前のブログ記事は「URLLoader クラスが上手く使え~ん・・・と思ってたら」です。

次のブログ記事は「Xacti のネジが行方不明」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。


月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら