

そのような正規表現は書くことができるのでしょうか。  
宜しくお願い致します。  
0→out  
00→out  
000→out  
0000→out  
00000→out

1→ok  
123→ok  
0123→ok  
00123→ok  
12345→ok


CC BY-SA 4.0
2018-10-27T08:53:50.967
49704
2018-10-28T02:51:40.410
2018-10-27T12:43:11.853
30718
30718
question
java 正規表現
５桁以内の半角数字でかつ「0だけ」は許可しない正規表現


否定先読みアサーション`(?!...)`を使って、先に「0だけ」を除外するのはどうでしょうか。否定先読みは、ほとんどの処理系で使えると思います。

[code]

    ^(?!0+$)\d{1,5}$
    
[/code]

Pythonで、次のようにテストしたらすべてあいました。

[code]

    import re
    
    pattern = r'^(?!0+$)\d{1,5}$'
    print(re.search(pattern, '0'))
    
[/code]

Javaの場合も正規表現は同じです。先読みは、最近のプログラミング言語であれば同じように使えるはずです。

[code]

    String str = "0";
    String pattern = "^(?!0+$)\\d{1,5}$";
    Pattern p = Pattern.compile(pattern);
    Matcher m = p.matcher(str);
    System.out.println(m.find());
    
[/code]


CC BY-SA 4.0
2018-10-27T10:36:10.813
49709
2018-10-28T02:51:40.410
2018-10-28T02:51:40.410
15171
15171
49704
answer