RegEx:给定一个与模式不匹配的字符串如何定义是否存在匹配的较大字符串(包含较小的字符串)?

时间:2017-03-01 14:27:26

标签: regex

我需要编写简单的程序,它接受2个参数(RegEx模式和字符串),如果字符串不匹配,是否存在可以匹配模式的较大字符串(包含较小的字符串)。

示例1 输入:“^ \ w + \ s + \ w + $”和“hello”不匹配,但程序将返回'true',因为有字符串“hello word”包含第一个并匹配给定模式

例2 输入:“^(abc)* $”和“ca”不匹配,但程序将返回true,因为字符串ab ca bc(包含ca)与模式匹配。

简而言之,如果存在这样的字符串(true / false),程序需要回答。

C#(C ++,Java),任何帮助将不胜感激。至少有一些方向如何去做。

1 个答案:

答案 0 :(得分:0)

问题在于你传递的正则表达式。

  • 在第一个中,删除\
  • 之前的反斜杠$
  • 在第二个中,更改()[] (abc)*匹配abcabcabc,但[abc]*将匹配a,b,c,ac,ab,aaa,bc,空

在Java中(来自OP的评论:Java可以)

import java.util.regex.*;
public class RegExTest{
  public static boolean check(String pat, String test){
    return test.matches(pat);
  }
  public static void main(String[] args){
    System.out.println(check("^\\w+\\s+\\w+$","hello"));
    System.out.println(check("^[abc]*$","ca")); 
  }
}