アプリ版:「スタンプのみでお礼する」機能のリリースについて

正規表現について質問です。
カンマありの整数と、カンマなしの整数をよしとする正規表現が知りたいです。

質問者からの補足コメント

  • ありがとうございます!
    java se8です!

      補足日時:2022/05/20 08:33
  • 何度も申し訳ありません。
    3桁ごとにカンマで区切られた整数字でした…。
    また、正規表現について色々と調べたのですが、いまいち理解できず、自分で正規表現を考えるにあたって、どのように組み立てたら良いのかなど、なにか、アドバイスを頂けませんでしょうか。

      補足日時:2022/05/21 10:06

A 回答 (4件)

カンマなしの整数は \d+


カンマ付き(3桁区切り)は、\d{1,3}(,\d{3})*
です。
以下、実装例です。
import java.util.regex.*;
public class sample {
public static void main(String[] args) {
//カンマなし整数の判定
boolean r1 = Pattern.matches("^\\d+$", "a999");
boolean r2 = Pattern.matches("^\\d+$", "8999");
System.out.println("r1=" + r1);
System.out.println("r2=" + r2);
//カンマつき整数の判定
r1 = Pattern.matches("^\\d{1,3}(,\\d{3})*$", "a999");
r2 = Pattern.matches("^\\d{1,3}(,\\d{3})*$", "8,999");
boolean r3 = Pattern.matches("^\\d{1,3}(,\\d{3})*$", "128,999");
boolean r4 = Pattern.matches("^\\d{1,3}(,\\d{3})*$", "8,9,99");
boolean r5 = Pattern.matches("^\\d{1,3}(,\\d{3})*$", "89");
System.out.println("r1=" + r1);
System.out.println("r2=" + r2);
System.out.println("r3=" + r3);
System.out.println("r4=" + r4);
System.out.println("r5=" + r5);
//両方を一度に判定
r1 = Pattern.matches("^(\\d{1,3}(,\\d{3})*)|(\\d+)$", "a999");
r2 = Pattern.matches("^(\\d{1,3}(,\\d{3})*)|(\\d+)$", "8999");
r3 = Pattern.matches("^(\\d{1,3}(,\\d{3})*)|(\\d+)$", "128,999");
r4 = Pattern.matches("^(\\d{1,3}(,\\d{3})*)|(\\d+)$", "8,9,99");
System.out.println("r1=" + r1);
System.out.println("r2=" + r2);
System.out.println("r3=" + r3);
System.out.println("r4=" + r4);
}
}

実行結果
r1=false
r2=true
r1=false
r2=true
r3=true
r4=false
r5=true
r1=false
r2=true
r3=true
r4=false

trueがマッチ、falseがアンマッチです。
    • good
    • 0
この回答へのお礼

ご丁寧にありがとうございます。
無事コンパイルできました。
これを機に正規表現をきちんと勉強したいと思います。本当にありがとうございました…!

お礼日時:2022/05/21 12:59

教科書で勉強しましょう


https://www.oreilly.co.jp/books/9784873113593/
    • good
    • 0
この回答へのお礼

ありがとうございます。
電子書籍で買います。

お礼日時:2022/05/21 12:59

(?<![\,\.\d])\d+(?:\,\d+)*(?![\,\.\d])

    • good
    • 2

回答できる保証はありませんが、


正規表現は言語(又はツール等)によって、方言があります。
あなたが対象としている正規表現の言語を明確にすると、正確な回答が期待できます。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!