開発日記 004 正規表現について

うむぅ・・・正規表現ですよ・。・
今までは、引数で与えられた文字列に対して'test'を使ってif文と'replace'を使って文字列を操作していたのだけど、'match'を使えば適合した文字列そのものを返してくれるので処理が省略できそうです。

まず、先頭文字が#で1つ以上の文字列。
/^#\w+/
これで'#~'の文字列に反応します。次にクラスを意味する.に反応するように追加。
/^#\w+|^\.\w+/
更に、'# .'が無い文字列に反応するように付け加えて・・・
/^#\w+|^\.\w+|^\w+/
一通り完成しました、これを使って'#div1'をmatchを使って確認してみます・・・'#div1'が帰ってきます。当たり前ですね。ここで'()'を使ってグループ化を綺麗にしましょう。
/^(#\w+|\.\w+|\w+)/
'^'をカッコの外に出してまとめました。すると、処理結果が'#div1,#div1'に・。・!
何とグループ化を行うと戻り値が配列になるようです、しかし二つもあっても無駄なので配列に格納しなくてよいと指示を出します。
/^(?:#\w+|\.\w+|\w+)/
これで戻り値が#div1一個に戻りました。さらに括弧を追加して
/^(?:#(\w+)|\.(\w+)|(\w+))/
こうすると戻り値が'#div1,div1,,'になりました。
これは最初の#div1がマッチした文字列を意味していて、二個目のdiv1はマッチした部分を意味しています。以降の,,は括弧内がマッチしなかったのでカラッポという事です。
つまり0,1番に文字が入っていればID
0,2番に文字が入っていればクラス
0,3番に文字が入っていればタグ名を意味している事になります。
そして、どの場合も配列に#や.を除いた文字列が含まれているので個別にreplaceを使って消す必要がなくなりました。
Category: プログラム

コメント

コメントの投稿

トラックバック