Java String 正規表現〜ワンポイントレッスン〜

Stringクラスを使用しての正規表現

正規表現は、文字列のパターンを表現したものです。
例えば、「3桁の数字」を表す正規表現であれば「[0-9]{3}?」と書きます。

桁数などの指定

X => [0-9]などの文字クラスやパターン。

「[0-9]?」であれば、数字が1回、または0回を意味する。

最長一致数量子
X?  X、1または0回
X*  X、0回以上
X+  X、1回以上
X{n}    X、n回
X{n,}   X、n回以上
X{n,m}  X、n回以上、m回以下

最短一致数量子
X?? X、1または0回
X*? X、0回以上
X+? X、1回以上
X{n}?   X、n回
X{n,}?  X、n回以上
X{n,m}? X、n回以上、m回以下

強欲な数量子
X?+ X、1または0回
X*+ X、0回以上
X++ X、1回以上
X{n}+   X、n回
X{n,}+  X、n回以上
X{n,m}+ X、n回以上、m回以下

論理演算子
XY  Xの直後にY
X|Y XまたはY
(X) X、前方参照を行う正規表現グループ

文字クラス

詳細はJavaDocにあります。

文字クラス
[abc]   a、b、またはc (単純クラス)
[^abc]  a、b、c以外の文字(否定)
[a-zA-Z]    a - zまたはA - Z (範囲)
[a-d[m-p]]  a - dまたはm - p: [a-dm-p] (結合)
[a-z&&[def]]    d、e、またはf (交差)
[a-z&&[^bc]]    a - z (bとcを除く): [ad-z] (減算)
[a-z&&[^m-p]]   a - z (m - pを除く): [a-lq-z] (減算)

全てではありませんが、よく使うものをあげます。

<文字列を削除>

replaceAll(正規表現, 変更文字);

public static void main(String[] args) {
   "a1a2a3B4B5B".replaceAll("[1-5]",""}; // aaaBBB
   "a1a2a3B4B5B".replaceAll("a[1-5]",""}; // B4B5B
   "a1a2a3B4B5B".replaceAll("[a-zA-Z]",""}; // 12345
}

matches(正規表現)は上と同じような処理をするのですがTrue or Falseを返却します。

public static void main(String[] args) {
   "a1a2a3B4B5B".matches("[1-5]"}; // True
   "a1a2a3B4B5B".matches("a[1-5]"}; //True
   "a1a2a3B4B5B".matches("[a-zA-Z]"}; //True
   "a1a2a3B4B5B".matches("[6-9]"}; //False
}

 

文字列の判定

文字列が「数字」 + 「四則計算の記号」 + 「数字」の形担っているか判定する

String inStr = "1 + 1";
if (inStr.matches("[0-9].*[0-9]")) {
   System.out.println("計算部分の文字列");
} else {
   System.out.println("計算式ではない");
}

実際に動かしてみたとき

String#matches()を実行してみる

関連ページ一覧

Eclipse セットアップ

  1. Java Install Eclipse〜開発ツールのインストール〜
  2. TensorFlow C++環境〜EclipseCDTをインストール〜
  3. Setup OpenGL with JavaJOGLを使う準備 for Eclipse
  4. Eclipse Meven 開発手順〜プロジェクトの作成〜
  5. Java OpenCV 環境セットアップ(on Mac)
  6. Eclipse SceneBuilderを追加する
  7. JavaFX SceneBuilder EclipseSceneBuilder連携~

Java Basic一覧

  1. Java Basic Level 1 〜Hello Java〜
  2. Java Basic Level2 〜Arithmetic Calculate〜
  3. Java Basic Level3 〜About String class〜
  4. Java Basic Level 4〜Boolean〜
  5. Java Basic Level 5〜If Statement〜
  6. Java Basic Summary from Level1 to 5
  7. Java Basic Level 6 〜Traning of If statement〜
  8. Java Basic Level8 〜How to use for statement〜
  9. Java Basic Level 8.5 〜Array〜
  10. Java Basic Level 9〜Training of for statement〜
  11. Java Basic Level 10 〜While statement 〜
  12. Java Basic Swing〜オブジェクト指向〜
  13. Java Basic Swing Level 2〜オブジェクト指向2〜
  14. サンプル実装〜コンソールゲーム〜
  15. Java Basic インターフェース・抽象クラスの作り方
  16. Java Basic クラスとは〜Step2_1〜
  17. Java Basic JUnit 〜テストスイートの作り方〜

Git関連

  1. Java Git clone in Eclipse 〜サンプルの取得〜
  2. Eclipse Gitリポジトリの取得 GitからソースをPullしよう〜
  3. IntelliJ IDEA GitGitリポジトリからクローン〜

投稿者:

takunoji

音響、イベント会場設営業界からIT業界へ転身。現在はJava屋としてサラリーマンをやっている。自称ガテン系プログラマー(笑) Javaプログラミングを布教したい、ラスパイとJavaの相性が良いことに気が付く。 Spring framework, Struts, Seaser, Hibernate, Playframework, JavaEE6, JavaEE7などの現場経験あり。 SQL, VBA, PL/SQL, コマンドプロント, Shellなどもやります。

コメントを残す