簡體   English   中英

String.matches()意外返回false。

[英]String.matches() return false unexpectedly.

我正在嘗試編寫一個解釋比賽結果的程序。 但是,為了做到這一點,我需要使用正則表達式使用String.matches(String regex)方法測試字符串是否與特定模式匹配。 當使用此方法時,我希望某些字符串返回true ,而是返回false

使用以下字符串作為正則表達式模式,當the字符串也應返回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)方法返回truestring.matches(String regex)

" 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)方法返回falsestring.matches(String regex)

" 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 "

我需要確定下三個字符串為何未通過前七個測試的正則表達式測試的幫助。

[ ]*[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

例如 [1-9]+不會接受10

“ 6克里斯托弗·拉莫斯河森林103 12 17:18” //由於103而失敗

“ 7 Boyer Hunter Lowell 78 10 17:20” //由於10而失敗

10 Miguel Tapia Merrillville 98 11 17:32 //由於10而失敗

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM