JavaScriptで正規表現を触ってみます。
正規表現を一通り覚えると、データの処理が劇的に早くなります。
ここでは最低限覚えておきたい基本の正規表現を解説します。
正規表現のフラグ(g,m,iなど)については「正規表現のフラグ【g,m,i】」で解説しています。
この記事の目次
JavaScriptの正規表現
今回はreplace
を使って実際のコードを見ながら正規表現を説明していきます。
下記のコードでは//
で囲まれた文字(下記では「山」)を「池」に置換します。
var array = ["山田","高山", "高山田","山本", "田中"]
for(var i=0; i < array.length; i++ ) {
var result1 = array[i].replace(/山/, '池');
console.log(result1);
}
//結果
池田
高池
高池田
池本
田中
『^』先頭の文字を指定する
次は文字列の先頭が「山」の文字を「池」に置換していきます。
/^山/
のように^を付けると、先頭の文字を表します。
var array = ["山田","高山", "高山田","山本", "田中"];
for(var i=0; i < array.length; i++ ) {
var result2 = array[i].replace(/^山/, '池');
console.log(result2);
}
//結果
池田
高山
高山田
池本
田中
山田や山本は、先頭が「山」なので該当しますが、高山や高山田は先頭ではないので置換対象からは外れます。
『$』末尾の文字を指定する
次は文字列の末尾が「田」の文字を「口」に置換していきます。
/田$/
のように$を付けると、文字列の末尾を表します。
var array = ["山田","高山", "高山田","山本", "田中"];
for(var i=0; i < array.length; i++ ) {
var result3 = array[i].replace(/田$/, '口');
console.log(result3);
}
// 結果
山口
高山
高山口
山本
田中
山田や高山田は末尾が「田」なので、置換対象となりますが、田中は末尾ではないので、置換対象とはなりません。
『.』任意の一文字を指定
次は「山+○」を含む文字列を「川田」に置換していきます。
/山./
のように「.」を付けると、任意の一文字を表します。
var array = ["山田","高山", "高山田","山本", "田中"]
for(var i=0; i < array.length; i++ ) {
var result4 = array[i].replace(/山./, '川田');
console.log(result4);
}
//結果
川田
高山
高川田
川田
田中
山◯という文字を置換します。山田や山本は置換されますが、高山は置換されません。
『+』文字の1回以上の繰り返し
+
は直前の一文字の繰り返しを表します。
var array2 = ["かたたたき","かたまり"]
for(var i=0; i < array2.length; i++ ) {
var result5= array2[i].replace(/かた+/, '');
console.log(result5);
}
// 結果
き
まり
「かた+」の場合は「かた」だけでも、「かたたた」でも置換対象となります。
『{n}』直前の文字n回の繰り返し
正規表現{n}
の場合は直前の文字n回分を指します。
var array2 = ["かたたたき","かたまり"]
for(var i=0; i < array2.length; i++ ) {
var result6 = array2[i].replace(/かた{2}/, '');
console.log(result6);
}
// 結果
たき
かたまり
かた{2}
の場合は「かたた」を指しますので、「かたたたき」は置換対象になりますが、「かたまり」は置換対象となりません。
下記で実際にコードが触れますのでいじってみましょう。
番外編:正規表現をエクセルでも使う
正規表現は一度覚えてしまえば、様々なことで使うことができます。
「会社でエクセルを中心に使っている」という人でも、正規表現は強い味方です。
例えば下記のような一行のデータがあり、名前ごとにまとめたいとします。
番号1:山田 番号2:高山 番号3:高山田 番号4:山本 番号5:田中
正規表現を知らなければ、ひとつずつ改行をしなければなりませんが、正規表現を使えば、「番号」を「改行+番号」に置換すれば一瞬で整形できます。
「:」を「タブ」に置換すれば列の整形も一発です。
エクセルでは正規表現が使えないので、一度テキストエディタに整形前のテキストをコピペしてから正規表現を使いましょう。
正規表現対応のテキストエディタはWindowsなら「サクラエディタ」、Macなら「mi」などあります。
探せばもっとあると思いますので、お使いのテキストエディタの機能を調べてみましょう。
以上、JavaScriptで正規表現を触ってみました。
replaceを上手く使うと、さらに多くのことができるようになります。
replaceについては以下の記事をご覧ください。