我正在尝试编写一个解释比赛结果的程序。然而,为了做到这一点,我需要使用regex来测试字符串是否使用String.matches(String regex)
方法匹配某个模式。当使用这种方法时,我希望返回true
的一些字符串,改为返回false
。
使用以下字符串作为正则表达式模式,当应该返回true
时,一些字符串返回true
,而另一些返回false
:
regex = "[ ]*[1-9]+[ ]+[a-zA-Z]+[ ]+[a-zA-Z]+[ ]+[a-zA-Z]+[ ]?[a-zA-Z]*[ ]?[a-zA-Z]*[ ]?[a-zA-Z]*[ ]?[a-zA-Z]*[ ]?[a-zA-Z]*[ ]?[1-9]+[ ]+[1-9]+[ ]+[0-9:.]+[ ]+"
以下是使用string.matches(String regex)
方法返回true
的一些字符串:
" 1 Ryan Kepshire Crown Point 31 4 16:31 "
" 2 Matthew Mosak Crown Point 34 4 16:44 "
" 3 Dylan Wallace Crown Point 36 4 16:58 "
" 4 Nicholas Zak Hanover Central 51 6 17:08 "
" 5 Joshua Whitaker Crown Point 37 4 17:16 "
" 8 Collin Allen Hobart 64 8 17:23 "
" 9 Zachary Hoover Crown Point 29 4 17:29 "
以下是使用string.matches(String regex)
方法返回false
的一些字符串:
" 6 Christopher Ramos River Forest 103 12 17:18 "
" 7 Boyer Hunter Lowell 78 10 17:20 "
" 10 Miguel Tapia Merrillville 98 11 17:32 "
我需要帮助来确定为什么底部的三个字符串在regex测试中失败,而顶部的7个字符串通过了测试
[ ]*[0-9]+[ ]+[a-zA-Z]+[ ]+[a-zA-Z]+[ ]+[a-zA-Z]+[ ]?[a-zA-Z]*[ ]?[a-zA-Z]*[ ]?[a-zA-Z]*[
^
]?[a-zA-Z]*[ ]?[a-zA-Z]*[ ]?[0-9]+[ ]+[0-9]+[ ]+[0-9:.]+[ ]+
^ ^
正则表达式不允许使用整数形式的0
。这就是它失败的原因。请参见此处。
http://regex101.com/r/uH3tP3/5
我已将其修改为接受0
。
Ex。[1-9]+
将不接受10
。
"6 Christopher Ramos River Forest 103
12 17:18"//由于103
而失败
"7 Boyer Hunter Lowell 78 10
17:20"//由于10
而失败
"10
Miguel Tapia Merrillville 98 11 17:32//由于10
而失败