_正規表現を使う その2
- 2009-03-20(金)
- ActionScript,
- Flash

Stringクラスの中の一部のメソッドは、正規表現と一緒に使う事ができます。
簡単に使う事ができそうなので、覚えておくと役に立つはずです。
簡単に使う事ができそうなので、覚えておくと役に立つはずです。
まずは、match()から使っていこうと思います。
当てはまる部分がない場合はnullを返します。
パターンのgフラグを付けると、文字列全体を検索します。
見つからなかった場合は、-1で返します。
replace()は、置換した後に新しいストリングを作り、置換の対象にした元のストリングは変更しません。
次のは、"Red"を"Black"に置換します。ただ、置換するのは最初に見つけた"Red"だけです。
また、改行を取り除くときには、
参考:文字列の中から改行をとりのぞきたい|_level0.KAYAC
たとえば、$&を使うと検索した文字に()をつける事もできます
match()
match()メソッドは、パターンに一致した箇所を配列として返します。当てはまる部分がない場合はnullを返します。
パターンのgフラグを付けると、文字列全体を検索します。
var text:String = "1988, 1990, 1995, 1997, 2001"; var pattern:RegExp = /199./g; var list:Array = text.match(pattern); trace(list);//出力1990, 1995, 1997match()は、パターンの中にグループがあるときに、マッチした全体とグループでマッチした部分を配列に分けて返します。 次のは、前のエントリーで使ったRegExpクラスのexec()を使った拡張子のサンプルをmatch()で書き換えました。
var file:String = "photo.jpg"; var pattern:RegExp = /(\w+)\.(\w+)/; var list:Array = file.match(pattern); if(list != null) { var matchString:String = list[0]; var filename:String = list[1]; var suffix:String = list[2]; trace(matchString);//photo.jpg trace(filename);//photo trace(suffix);//jpg }
search()
search()メソッドは、最初に見つかった位置のインデックス番号を返します。見つからなかった場合は、-1で返します。
var text:String = "Macintosh iPhone iTune"; trace(text.search(/Macintosh/));// 0 var pattern:RegExp = /iPhone/; trace(text.search(pattern));// 10 trace(text.search(/iPod/));// -1
replace()
replace()メソッドは、ストリングを正規表現で検索し、引数で指定したテキストに置換します。replace()は、置換した後に新しいストリングを作り、置換の対象にした元のストリングは変更しません。
次のは、"Red"を"Black"に置換します。ただ、置換するのは最初に見つけた"Red"だけです。
var text:String = "Red Bicycle, Red Car"; var newText:String = text.replace(/Red/, "Black"); trace(newText);//Black Bicycle, Red Car見つけたパターンをすべて置換するには、正規表現にフラグのgを付けます。
var text:String = "iPhone iPod"; var newText:String = text.replace(/i/g, "I"); trace(newText);//IPhone IPod次は、パターンで見つけた部分を削除しています。削除するには、""を指定します。
また、改行を取り除くときには、
\nを指定します。
var date:String = "2009-03-20"; var reDate:String = date.replace(/-/g, ""); trace(reDate);//20090320追記(3/30):改行コードには以下の種類があるので、
\nだけでは、不十分です。参考:文字列の中から改行をとりのぞきたい|_level0.KAYAC
- CR =
\r - LF =
\n - CR+LF =
\r\n
//\nを削除 reDate:String = reDate.replace(/\n/g, ""); //\rを削除 reDate:String = reDate.replace(/\r/g, "");replace()メソッドには、置換テキストに使用できる置換コードが用意されています。
| コード | 置き換える文字 |
|---|---|
| $$ | $で置き換えるにはSSと書く |
| $& | マッチしたテキスト |
| $' | マッチした位置の前方のテキスト('は本当は左シングルクォーテーション。入力方法が分からなかった。) |
| $' | マッチした位置の後方のテキスト |
| $n | グループマッチのn番目(nは0-9) |
| $nn | グループマッチのnn番目 |
たとえば、$&を使うと検索した文字に()をつける事もできます
var text:String = "Macintoshmac"; trace(text.replace(/mac/g, "($&)"));//Macintosh(mac)これを応用するとURLを<a>タグで囲む事もできます。
var myUrl:String = "詳しくはhttp://paphead.comまで"; var pattern:RegExp = /http:\/\/.*?\.com/g; var reUrl:String = "<a href=\"$&\">$&</a>"; var newUrl:String = myUrl.replace(pattern, reUrl) trace(newUrl);//詳しくはhttp://paphead.comまで
このエントリーをTwitterでつぶやく (投稿画面に飛びます)
- Newer: _可変引数(...args)の使い方
- Older: _バックスラッシュを表示させる





