目次

正規表現

パターン指定方法

パターン 説明 使用例 例の補足
. 任意の1文字(改行は除く) 任意の3文字
? 直前の文字が0回または1回 a?bc abcまたはbc
* 直前の文字を0回以上繰り返し ab* a、ab、abb、abbb、abbbb・・・
+ 直前の文字が1回以上繰り返し ab+ ab、abb、abbb、abbbb・・・
^ 行頭 ^abc abcで始まる行に一致
$ 行末 abc$ abcで終わる行に一致
[] 括弧内の任意の1文字に一致 [abc] abcの1文字に一致
[a-z] 小文字のaからzまでの1文字に一致
[A-Z] 大文字のAからZまでの1文字に一致
[0-9] 数字の0から9までの1文字に一致
[^] 括弧内の文字に一致しない [^abc] abcの文字に一致しない
{} 直前の文字を指定回数繰り返し {n} n回繰り返し
{n,} n回以上繰り返し
{,m} m回以下繰り返し
{n,m} n回以上m回以下繰り返し
| いずれかの文字列に一致 foo|bar fooまたはbarに一致
\w 任意の英数字と_(アンダースコア)の1文字に一致
([a-zA-Z_0-9]と同値)
\W 任意の英数字と_(アンダースコア)以外の1文字に一致
\s 任意の空白文字(スペース、タブ、改行、復帰)の1文字に一致
\S 任意の空白文字(スペース、タブ、改行、復帰)以外の1文字に一致
\d 任意の数字1文字に一致
([0-9]と同値)
\D 任意の数字以外の1文字に一致
() 括弧内に一致した文字列をグループ化する

エスケープ

以下のように、エスケープする文字の直前に\\を記述する。

    String s = "^\\.\w*"; // .(ドット)から始まる文字列

Stringクラスのmatchesメソッド

String s = "hogehoge";
 
if (s.matches("[a-z]{8}") {
    // 処理
}

Patternクラス、Matcherクラス

import java.util.regex.Pattern;
import java.util.regex.Matcher;
 
 ・・・
 
String s = "123or456";
 
Pattern pattern = Pattern.compile("[0-9]+");
Matcher match = pattern.matcher(s);
 
while (match.find()) {
    System.out.println(m.group());
}
123
456