【プログラム】正規表現

■ 予備知識編

エスケープが必要な文字

\ * + . ? { } ( ) [ ] ^ $ - |

 → 上記の文字の前に「\」を付ける
詳細は以下を参照。
http://www.javadrive.jp/regex/ini/index4.html

■ サンプル編

 * まず、感じをつかむための例を載せる
`No`パターン`概要`備考
01[abc]"abc"いずれかの文字 "":文字グループを表す
02[~abc]"abc"以外の文字「^」:XXX以外
03[a-zA-Z]a~z又はA~Zの文字 "-":文字範囲を表す
04[0-9]0~9の数字
05(ab|cd)ab又はcd「|」:ORを表す
06A{n}Aのn回以上連続 "n":数字
07A+Aが一回以上連続

■ 基本編

括弧 ""

* 文字グループを表す

ハイフン "-"

 * 「-」:From(~)
  => 括弧 "[]"の中で、ハイフン "-"を用いると、文字範囲を表す

* [0-9]       = [0123456789]
* [a-z]       = [abcdefghijklmnopqrstuvwxyz]
* [a-zA-Z]    = 大文字・小文字のアルファベット
* [0-9a-zA-Z] = 半角英数字
* [ぁ-ん]     = 全ての全角ひらがな
* [ァ-ン]     = 全ての全角カタカナ

注意

 * 「ハイフン(-)」を入力可能文字にしたい場合は、エスケープすること

詳細は以下の関連記事を参照のこと。
http://blogs.yahoo.co.jp/dk521123/34918528.html

ピリオド "."

* 改行文字以外の任意の一文字を表す

プラス "+"

* 直前の文字の1回以上の繰り返しを表す

"*"

* 直前の文字の0回以上の繰り返しを表す

* 「.*」 = 0文字以上の任意の文字列
* 「.+」 = 1文字以上の任意の文字列
詳細は以下を参照。
https://www.mlab.im.dendai.ac.jp/~yamada/java/regex/

"|"

* ORを表す

"\d" / "\w" / "\s" / "\S"

* "\d" : 数字(全角数字含む)を表す
* "\w" : 単語に使用される任意の文字([a-zA-Z_0-9]。英字、数字、アンダースコア('_')、全角ひらがな、全・半角カタカナ、漢字)を表す

* "\s" : 空白文字を表す
* "\S" : 空白以外の文字を表す
詳細は以下を参照。
http://msdn.microsoft.com/ja-jp/library/20bw873z%28VS.80%29.aspx

一致しているか

 * 「?」:直前の文字と0回~1回、一致しているか
  => 例[ab?]:「a」または「ab」と一致しているか
 * 「*」:直前の文字と0回以上、一致しているか
  => 例[ab*]:「a」または「ab」、「abb」など一致しているか
http://www.cocoaliz.com/vb.net/index/16/
 * 「+」:直前の文字と1回以上、一致しているか
  => 例[ab+]:「ab」、「abb」など一致しているか(「a」は不一致とみなされる)

 * 「{n}」:n回一致しているか
  => 例[0-9]{4}:半角数字が4回繰り返された(「0123」、「4567」など)
 * 「{n,m}」:n回~m回一致しているか
  => 例[0-9]{2,4}:半角数字が2~4回繰り返された(「01」、「4567」など)

その他

 * 「^」:先頭(始点)
  => 例[^abcdef]:abcdef以外
 ※ 「$」:終点

参考文献

http://sakura-editor.sourceforge.net/htmlhelp/HLP000089.html

■ 応用編

整数

例:5桁の正の整数

^[0-9]{1,5}$
http://park5.wakwak.com/~weblab/tipsSeikiHyogen1.html

実数

例:浮動小数

^[-+]?[0-9]*\.?[0-9]+$

日付

例:YYYY/M/d形式かどうか

「2011/01/01」「2011/1/1」両方OK!
\d{4}/\d{1,2}/\d{1,2}

英数字、記号

例:英数字および「-」、「*」を5桁まで

[a-zA-Z0-9\u002A\u002d]{0, 5}

例:英数字混合文字列

^[0-9]+[0-9a-zA-Z]*[a-zA-Z]+[0-9a-zA-Z]*$|^[a-zA-Z]+[0-9a-zA-Z]*[0-9]+[0-9a-zA-Z]*$
http://w-leo.way-nifty.com/blog/2005/12/post_41d4.html

その他

イベントログの代替え文字「%X」

* 「%X」(X:整数値。ただし、0が頭にならない整数。「%0」も除外)
\u0025[1-9]+[0-9]?

プログラム・バージョン「XX.XX.XX.XX.XX」

* 「XX.XX.XX.XX.XX」(X:0-9)
^[0-9]{1,2}\\.[0-9]{1,2}\\.[0-9]{1,2}\\.[0-9]{1,2}

# Javaでの使用例は以下の関連記事を参照のこと。
http://blogs.yahoo.co.jp/dk521123/33605882.html


関連記事

正規表現について

http://blogs.yahoo.co.jp/dk521123/26123295.html

Java

http://blogs.yahoo.co.jp/dk521123/33605882.html

C#

http://blogs.yahoo.co.jp/dk521123/24372100.html

VB

http://blogs.yahoo.co.jp/dk521123/26759038.html

JavaScript

http://blogs.yahoo.co.jp/dk521123/34640242.html

ASP.NET / 妥当性検証・Validation (RegularExpressionValidator編)

http://blogs.yahoo.co.jp/dk521123/26142875.html

Java正規表現を使った複雑な文字列置き換え ~ replaceFirst / replaceAll ~

http://blogs.yahoo.co.jp/dk521123/34781790.html

【トラブル】正規表現で入力可能文字チェックした際に入力不可能文字「カンマ」が入力できてしまう

http://blogs.yahoo.co.jp/dk521123/34918528.html