2014-09-12 42 views
0

我要驗證服務器的響應相匹配下列格式定期expresssion的Java

STATUS [a number] [a math operator] [another number] 

數可以是任意整數和數學運算符是+,/, - 或*。

如何在java代碼中使用正則表達式驗證此操作?

+3

您是否試過編寫正則表達式呢? – hexafraction 2014-09-12 22:56:01

+1

您可以顯示一個實際的字符串示例,而不是使用佔位符? – hwnd 2014-09-12 22:56:29

+0

什麼樣的數字?數字可以包含','和'。'和指數的上標?羅馬數字可以嗎?八?十六進制? – 2014-09-12 23:03:46

回答

1

您可以使用以下正則表達式使用matches()來驗證。

if ("STATUS 5 + 10".matches("STATUS *\\d+ [-+/*] \\d+")) { ... 
+0

您需要轉義*和/ – Lucas 2014-09-12 23:08:34

+0

我會盡力而爲。此外,該行應以\ n.i.e STATUS 5 + 10 \ n結尾。我是否需要在* \\ d +之後指定? – WillMcavoy 2014-09-12 23:29:53

+0

想想上面的作品,它可以接受多於一個5和+之間的空格,這不是預期的。我嘗試將它改爲* \\ d + [:blank:] * [ - +/*] [:blank:] * \\ d +但它失敗。我怎樣才能確保一個空格「5 + 10」? – WillMcavoy 2014-09-13 19:31:29

0

它會像這樣

STATUS [0-9]* [+*/-] [0-9]* 
0

\ Oracle的文檔的一些事情:

Pattern p = Pattern.compile("a*b"); 
Matcher m = p.matcher("aaaaab"); 
boolean b = m.matches(); 

現在"a*b"是這裏的正則表達式,你需要與你所需要的正則表達式,喜歡的東西來代替:

"[\\d]+[+-\\*\\/]{1}[\\d]+" 

但它可能會有所不同,取決於你需要什麼(你沒有指定數字應該是多長等)