電気ウナギ的○○

About Home

ActionScript の正規表現あれこれ

shinoda (2009年1月30日 02:35)

愛すべき正規表現の話。

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 な書き方の方がしっくりくるので、こういう書き方はもう二度としないだろうなあ。

電気ウナギ的○○

電気ウナギ的○○

About Back

コメント(0)

電気ウナギ的○○

電気ウナギ的○○

About Back

トラックバック(0)

トラックバックURL: https://blog.netandfield.com/mt/mt-tb.cgi/369

電気ウナギ的○○

About This Site

電気ウナギ的○○
岩国在住。広島で働く超零細IT企業社長のいわゆる社長日記。
何か、酒と食い物のことばかり書いているようで・・・お察しのとおり、肥満体です:-)


2011/06/24
iPhone用サイト公開

Create with jQuery, jQTouch.


CLOSE