![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
Flash Pro CS5
AS3.0
で記述しています。
しかし今回は正規表現に関しての質問ですので、AS3に限らず教えていただけるとありがたいです。
例として次のような2つの文章があります。
<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.
ここから<font>タグで囲まれた中身の部分だけ抜き出し,変数に入れたいと考えています。
つまり,
1つ目の文章の場合,”Laid off”の部分
2つ目の文章の場合,”laid”と”off”の部分
となります。
2つ目の文章に関しては,できればひとつの変数に”laid,off”というように文字列が入ると嬉しいです。
(変数1に”laid”,変数2に”off” または 配列に順番に格納 よりも)
.replace(/">.*?<\/font>/g, "hoge");
のように書き換える方法はわかったのですが,囲まれた中身を抜き出す方法がわかりませんでした。
よろしくお願いいたします。
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);
}
----------------------------------------------
毎回素早いご回答ありがとうございます。
応用が効くプログラムをありがとうございました。
無事完成させる事ができました。
もっと勉強して色々使いこなせるようになりたいです。
ありがとうございました。
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してうまく動きませんでした。
なるほど!
とてもシンプルでわかりやすいです。
大変勉強になりました。
どちらの回答者様をベストアンサーにするかとても迷いましたが
投稿時間の早さで決めさせていただきました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS HTMLソースの質問 3 2022/07/28 13:29
- Visual Basic(VBA) VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本 1 2022/04/27 13:31
- HTML・CSS CSSがなぜかfont-sizeだけ効かない...記述がまちがっているんでしょうか 5 2022/04/09 17:52
- HTML・CSS HTMLで特定の文字だけ色を変えたいのですが、指定した色と違う色が反映してしまいます。 下記、「前」 5 2023/06/27 12:08
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP アンドロイドスマホでのphp echoの文字サイズ 1 2023/05/13 15:15
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
laptop go2からの買い替え、lap...
-
スマホでサイトの画像を長押し→...
-
ボカロ動画はFlash?HTML5?
-
ActionScript スクロールメニュー
-
AS3 mc0~5をまとめて処理する
-
FLASHでゲームを作っていた人は...
-
この曲はなんでしょう?
-
スクリップト
-
私のコンピューター上のファイ...
-
arduino プログラムについて
-
chrome flash
-
FLASHの再生はできないのでしょ...
-
フラッシュゲームアーカイブ2
-
ウェブサイトで Flash が事実上...
-
Flashコンテンツを使ったWebサイト
-
Flash Playerのサポートが終了
-
Form内のselectを連動させるに...
-
Flashをブロックしないで
-
ダウンロードしたデジブックはa...
-
ad or script について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBでボタンを押すと画像をラン...
-
配列の要素番号を取得するには?
-
VB.NET の配列の要素数
-
重複しない乱数整数を発生させる。
-
IDの自動採番について
-
DataGridでCTRLキーを押さずに...
-
重複しない乱数の生成
-
複数の変数宣言を、for文で一気...
-
変な質問ですみません、n番目の...
-
C言語のsizeof(サイズオブ)演算...
-
Vba 配列の中の特定文字列の位...
-
FlashソフトSuzukaで、トランプ...
-
VB6 複数行のテキストをリスト...
-
簡単な当たり判定作りたい
-
【数字ランダム】計算問題ラン...
-
絵を描き、その都度のxy座標を...
-
問題がランダムに出るクイズ
-
ヒープソートの問題について
-
String.prototype.split2d 理...
-
景品パネルの作り方
おすすめ情報