[正規表現] 基本メモ

簡単な例 (JavaScript)

var s = 'apple,orange,banana';
var rs = s.match(/apple/);
if (rs) {
    console.log('matched');
}
var s = 'test1@example.com,test2@example.com,test3@example.com'
var rs1 = s.match(/.+@example.com/) 全てマッチ
var rs2 = s.match(/.+?@example.com/) 最初のものだけマッチ (最小マッチ)

() RegExp の使い方

例: RegExp.$1 – 直前の正規表現パターンでマッチした1つ目を抽出する

var s = 'test123@example.com'
var rs1 = s.match(/(.+?)@example.com/)
console.log(RegExp.$1) → test123

括弧は複数定義可、入れ子にもできる

var rs2 = s.match(/((.+?)@example.(com))/)
console.log(RegExp.$1) → test123@example.com
console.log(RegExp.$2) → test123
console.log(RegExp.$3) → com

 サンプル

Twitter IDの抽出

var s = '@84kure'
var rs = s.match(/@[A-Za-z0-9_]{1,15}/)
console.log(RegExp.$1) → @84kure

HTMLタグの中身の抽出

var s = '<title>端くれプログラマの備忘録</title>'
var rs = s.match(/<title>([*<]+)</title>/)
console.log(RegExp.$1) → 端くれプログラマの備忘録

日付の変更 (日本語表記に直す)

var s = '2015-01-23'
var rs = s.match(/(d{4})[-/](d{2})[-/](d{2})/)
console.log(RegExp.$1+'年'+RegExp.$2+'月'+RegExp.$3+'日') → 2015年01月23日

参考サイト

正規表現(RegExp)
http://www.tohoho-web.com/js/regexp.htm

正規表現では、次のようなマッチング表現を用いることができます。

正規表現 意味
A Aという文字
ABC ABCという文字列
[ABC] A、B、Cのいずれか1文字
[A-C] A~Cまでのいずれか1文字
[^ABC] A、B、Cのいずれでもない任意の1文字
. 任意の1文字
A+ 1文字以上のA
A* 0文字以上のA
A? 0文字または1文字のA
^A Aで始まる文字列
A$ Aで終わる文字列
ABC|DEF|GHI ABCまたはDEFまたはGHI
A{2} 2個のA(AA)
A{2,} 2個以上のA(AA、AAA、AAAA、…)
A{2,3} 2個~3個のA(AA、AAA)
[b] バックスペース

 

バックスラッシュ()に続く文字は特別な意味を持ちます。

表現 意味
b スペースなどの単語の区切り
B b以外の文字
cA Ctrl-A
d 任意の数値([0-9]と同じ)
D 数値以外の文字([^0-9]と同じ)
f フォームフィード文字
n 改行文字
r 復帰文字
s 1文字の区切り文字([ fnrtv])
S s以外の1文字
t タブ文字
v 垂直タブ文字
w 英数文字([A-Za-z0-9_]と同じ)
W w以外の文字
2 2番目の (…) にマッチした文字列
o033 8進数で033の文字
x1b 16進数で1bの文字
その他 その他の文字自身

 

/…/ の後ろに記述する i、g、m などのフラグは下記のような意味を持ちます。

フラグ 意味
i 大文字・小文字を区別しない
g 2番目、3番目… にマッチする部分も検索する
m 複数行に対して検索する (e55/N6)