• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:正規表現でタグの中身を抜き取り変数に入れたい)

正規表現でタグの中身を抜き取り変数に入れたい

このQ&Aのポイント
  • Flash Pro CS5とAS3.0で正規表現を使用してHTMLタグ内のテキストを抜き出し、変数に格納したいです。
  • 具体的には、<font>タグで囲まれた中身を抜き取りたいです。
  • また、2つ目の文章に関しては、「laid」および「off」の部分を1つの変数に入れたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.2

次の2つのうちどちらかでできると思います。 2つの違いは,最初のデータをどのように用意するかの違いです。 ---------------------------------------------------------- //とりあえず文字列を 変数str1 と str2 に分けて用意する(?) var str1:String='<font color="#cc0033">Laid off</font> a lot of workers.'; var str2:String='They <font color="#cc0033">laid</font> us <font color="#cc0033">off</font> for a month.'; //関数getStrの定義(引数s:文字列) function getStr(s:String):void { // //引数 sを 「</font>」で区切った配列1を作成する var arr1:Array=s.split('</font>'); // //配列2を作成する var arr2:Array = new Array(); // //配列 arr1 の要素数-1 ループさせる for (var i:int = 0; i < arr1.length-1; i++) { //配列arr1の各要素を「>」で区切った配列3を作成する var arr3:Array=arr1[i].split(">"); //配列3の最後の要素をつなげた配列2にする arr2.push(arr3[arr3.length-1]); } // //arr2を出力させてみる trace(arr2); } //関数getStrを実行(引数str1) getStr(str1); //関数getStrを実行(引数str1) getStr(str2); ---------------------------------------------------------- ---------------------------------------------- //とりあえず分けない文字列全文を用意する(?) var str:String='<font color="#cc0033">Laid off</font> a lot of workers.They <font color="#cc0033">laid</font> us <font color="#cc0033">off</font> for a month.'; //strを「.」で区切った配列arrを作成 var arr:Array=str.split('.'); //arrの要素数分ループ for (var i:int = 0; i<arr.length; i++) { //関数getStrを実行(引数arr[i]) getStr(arr[i]); } //関数getStrの定義(引数s:文字列) function getStr(s:String):void { // //引数 sを 「</font>」で区切った配列1を作成する var arr1:Array=s.split('</font>'); // //配列2を作成する var arr2:Array = new Array(); // //配列 arr1 の要素数-1 ループさせる for (var i:int = 0; i < arr1.length-1; i++) { //配列arr1の各要素を「>」で区切った配列3を作成する var arr3:Array=arr1[i].split(">"); //配列3の最後の要素をつなげた配列2にする arr2.push(arr3[arr3.length-1]); } // //arr2を出力させてみる trace(arr2); } ----------------------------------------------

ponyooon
質問者

お礼

毎回素早いご回答ありがとうございます。 応用が効くプログラムをありがとうございました。 無事完成させる事ができました。 もっと勉強して色々使いこなせるようになりたいです。 ありがとうございました。

その他の回答 (2)

回答No.3

以下の構文で出来そうです。(一応確認しました) //----------------------------------------------------- var Patt1:RegExp = /<\/font>.*<font [^>]*>/g; var Patt2:RegExp = /^.*<font [^>]*>/; var Patt3:RegExp = /<\/font>.*$/; var str1:String = "文字列"; str1=str1.replace(Patt1, ","); str1=str1.replace(Patt2, ""); str1=str1.replace(Patt3, ""); //------------------------------------------------------- 注意:文字列の中に<font ・・・>・・・</font>が無い時はstr1の値は変化しません。    <font ・・・>・・・</font>が対が正しときも正常には動きません 正規表現の説明  Patt1はすべての/<\/font>.*<font [^>]*>/を”,”に置換    つまり</font>・・・<font ・・・>を”,”に置換      <\/font> -> </font>      .* -> 任意の文字を任意個      <font [^>]*> -> <font ・・・>          [^>]*は”>”以外の文字を任意個(これで最初の”>”範囲になります)  Patt2は /^.*<font [^>]*>/を削除(Patt1があるのでgは不要)    つまり・・・<font ・・・>を削除      ^.*は文字列の最初から任意文字任意個  Patt3は /<\/font>.*$/を削除(Patt1があるのでgは不要)    つまり</font>・・・を削除      .*$は任意文字任意個で最後まで "[^>]*"のところで迷ってしまいました。 最初に<font .*>でTESTしてうまく動きませんでした。

ponyooon
質問者

お礼

なるほど! とてもシンプルでわかりやすいです。 大変勉強になりました。 どちらの回答者様をベストアンサーにするかとても迷いましたが 投稿時間の早さで決めさせていただきました。 ありがとうございました。

  • deka0831
  • ベストアンサー率36% (60/166)
回答No.1

秀丸の、置換やマクロではいかがでしょうか?

ponyooon
質問者

補足

文章はすでに決まったXMLから取得し,変数内に入れてあるものなので, 正規表現などによりプログラム内で書き換えたいと考えています。

関連するQ&A