检查String是否包含正则表达式匹配

时间:2014-10-09 00:08:59

标签: java regex

我正在开发一个程序,它是一个简单语言的解释器,可以使用Sets并执行Set操作。它目前仅适用于包含数字的集合。

当用户定义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是否包含正则表达式?或者还有其他更简单的方法来实现这个目标吗?

2 个答案:

答案 0 :(得分:1)

由于这是一项任务,我不会写出代码,但另一种解决方案是:

  • 拆分,令牌上的字符串(使用String.split()
  • 对于生成的拆分数组的每个成员:
    • 修剪成员的前导和尾随空格
    • 如果修剪过的成员是一个整数(我会让你弄清楚如何确定):
      • 它不符合您指定的标准
    • 否则:
      • 令牌可能符合您的标准(包含多个整数和空格但没有逗号。有几种方法可以确定:在" "上进行拆分;使用while循环或者别的什么。我会让你弄明白的。

答案 1 :(得分:0)

您的解决方案足够好,您可以通过积极的方式尝试

Pattern pattern = Pattern.compile("^[1-9](,[1-9])*$");
Matcher matcher = pattern.matcher(input);
if(matcher.matches()) return true;