2014-10-09 261 views
1

我正在开发一个程序,该程序是一个简单语言的解释程序,可用于集合并执行Set操作。它目前仅适用于持有号码的集合。检查字符串是否包含正则表达式匹配

当用户定义了一组,输入看起来是这样的:set1 = {1, 25, 5, 6};

输入像set1 = { 1 , 25 , 5, 6};也能正常工作,但

set1 = { 1 25 , 5,6};不应该。

所以基本上无论空格的数量,如果有数字之间的","它很好。

我要的是检查是否有一个数字,后跟空格和另一个号码,中间没有任何",",任何地方String

目前,我这样做:

Pattern pattern = Pattern.compile("[0-9][\" \"]+[0-9]"); 
Matcher matcher = pattern.matcher(input); 
if(matcher.find()) return false; 

和它工作得很好。但这是一项大学任务,我不确定我是否可以使用PatternMatcher

所以我的问题是,有没有其他方法可以检查String是否包含正则表达式?或者有没有其他更简单的方法来实现这一点?

回答

1

因为它是一个任务,我不会写出来的代码,但一种替代方案是:

  • 拆分对,令牌字符串(使用String.split()
  • 对于所得的每个成员拆分数组:
    • 从成员
    • 修剪开头和结尾的空格如果修剪成员是一个整数(我会让你想出如何确定):
      • 它不符合标准指定
    • 否则:
      • 这有可能是该令牌可满足您的条件(包含多个整数和空间,但没有逗号。有几种方法可以确定:在" "上进行拆分;使用一个while循环,或者其他的东西。我会让你弄清楚。
+0

良好,但如果我有上',''此{1 2,3,4}'和分裂然后,如果我检查'分裂[0]'这将是'12'这是一个整数,但输入仍然是错误的。 – qbit 2014-10-09 00:17:40

+0

不,在这种情况下,'split [0]'是'1 2'(空间将被保留),当然这不是一个整数。 – 2014-10-09 00:20:08

+0

但是,如果我不删除该索引上的空格,那意味着我不会删除它们,所以对split [1] =“2”'的检查仍然会失败。对? – qbit 2014-10-09 00:23:41

相关问题