とりあえず正規表現の基本は分かったんで具体的に

行き当たりばったりで今まで適当に覚えた正規表現をJavaScriptを触りながら今一度、ということで。

『split』に正規表現を使う

ヒットさせる文字列『 - 』(半角空白あり)
str = 'AAA - BBB - CCC';
arrstr = str.split(/\s\-\s/);
//arrstr[0]=AAA
//arrstr[1]=BBB
//arrstr[2]=CCC


数値を区切り文字として分割する

str = 'AAA12BBB3CCC4';
arrstr = str.split(/[0-9]/g);
//arrstr[0]=AAA
//arrstr[1]=BBB
//arrstr[2]=CCC
まあこんなことも可能的なことで。


Trim的空白削除

両端の全角/半角空白を削除する。
str = "  ABC DEF  ";
Result = str.replace(/^[\s ]+|[\s ]+$/g,'');
//Result:ABC DEF


正規表現を使用して特定の文字列を探す

例:『10. xxxxxx』のような形式の文字列から先頭にある『10. 』を探す
re = new RegExp(/^[0-9]+\.\s/);
if (str.match(re)){
    ......
} 
先頭にある文字列が対象なので『^』が必要
この場合にヒットする文字列:
『0. 』、『123456789. 』など


連続した文字列を探す
  1. re= new RegExp(/[0-9]+/);
  2. re = new RegExp(/[0-9]+/g);
str = "123abc456def";           
if (str.match(re)){
    Result = RegExp.lastMatch;
}
//1. Result:123
//2. Result:456
『1.』の場合、ヒットした時点で終わりなので、『123』が返る。
『2.』の場合、『g』があるので文字列の最後まで探す、このため最後にMatchする(lastMatchだから)『456』が返る。


文字列に含まれる連続した数字を抜き出して桁数を取得する
str = "abc123456def";
re= new RegExp(/[0-9]+/);
if (str.match(re)){
    Result = RegExp.lastMatch.length;
}
//Result :6


『(),[],~~』で囲まれた文字列を削除する
str = "abc(ABC)[DEF]~GHI~()def";
Result = str.replace(/(\(|\[|~).*(\)|\]|~)/g, "");
//Result:abcdef


特定の文字列を対象に処理を行う
ヒットさせる文字列:『 - Single,- Single, - EP,- EP』
$ を使って末尾にある場合のみヒットさせる。
下記、4パターンの文字列から該当文字列を削除
  1. str = "ABCDE - Single";
  2. str = "ABCDE- Single";
  3. str = "ABCDE - EP";
  4. str = "ABCDE- EP";
Result = str.replace(/\s?-\s(EP|Single)$/, "");
//Result:ABCDE

Webページに表示する文字列の中に『"』や『'』があるとたまにバグるので、その前に『\』を付加する。
Result = str.replace(/'/g,"\\\'");
Result = str.replace(/"/g,"\\\"");
外部から情報を取得して扱うときに起こり得ることなのでここまで十分。

etc:
『.』なんでもいい1文字
『+』最低1回以上繰り返し
『*』最低0回以上繰り返し
組み合わせて
『.+』なんでもいい文字列(1文字以上)
『.*』なんでもいい文字列(1文字もなくても良い)

0 Comments:

Recent Posts