2014-09-12 27 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]+" 

但它可能会有所不同,取决于你需要什么(你没有指定数字应该是多长等)