簡単な例 (JavaScript)
1 2 3 4 5 |
var s = 'apple,orange,banana'; var rs = s.match(/apple/); if (rs) { console.log('matched'); } |
1 2 3 |
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つ目を抽出する
1 2 3 |
var s = 'test123@example.com' var rs1 = s.match(/(.+?)@example.com/) console.log(RegExp.$1) → test123 |
括弧は複数定義可、入れ子にもできる
1 2 3 4 |
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の抽出
1 2 3 |
var s = '@84kure' var rs = s.match(/@[A-Za-z0-9_]{1,15}/) console.log(RegExp.$1) → @84kure |
HTMLタグの中身の抽出
1 2 3 |
var s = '<title>端くれプログラマの備忘録</title>' var rs = s.match(/<title>([*<]+)</title>/) console.log(RegExp.$1) → 端くれプログラマの備忘録 |
日付の変更 (日本語表記に直す)
1 2 3 |
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) |