2017-03-01 37 views
-4

我需要編寫一個帶有2個參數(RegEx模式和字符串)的簡單程序,如果字符串不匹配答案,是否存在可匹配模式的較大字符串(包含較小字符串)。正則表達式:當給定的字符串不匹配模式如何定義是否存在大字符串(包含較小的一個),匹配?

例1 輸入「^ \ w + \ S + \ W + $」和「你好」都無法比擬的,但程序會返回「真」,因爲有字符串「hello字」包含第一個和匹配給定的模式

例題 輸入 「^(ABC)* $」 和 「CA」 不匹配,但由於是相匹配的模式字符串AB CA BC(含CA)節目將返回true。

總之,程序需要回答如果這樣的字符串存在(真/假)。

C#(C++,Java)和任何幫助將不勝感激。至少有一些方向如何去做。

+1

whic h語言,到目前爲止你已經嘗試了什麼? – jjj

+0

首先,請不要稱之爲純粹簡單的文本,而是要與「表達式」匹配 - 結合主題,其中模式是實際(常規)表達式,這非常令人困惑。 _「,但程序將返回'真',因爲有表達式」你好詞「,其中包含第一個和匹配給定模式」_ - 哪裏「是」那?你有沒有可能的文本列表,「你好詞」會是其中之一嗎? – CBroe

+0

@jjj我需要C#,但C++,Java也會這樣做。 – dimm

回答

0

問題是你正在傳遞的正則表達式。

  • 在第一個,除去反斜槓\$
  • 在第二個之前,更改()[](abc)*匹配ABCABCABC並且同樣但[abc]*將匹配A,B,C,AC,AB,AAA,BC,空

在Java(從OP的評論:Java是OK)

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")); 
    } 
} 
+0

看,這2個正則表達式只是例子。我需要得到任何正則表達式和任何字符串,如果字符串不匹配我需要回答,如果這個字符串可以「固定」(這是由更大的取代包含以前的匹配)。 – dimm

+0

正如我所提到的,問題出在您的正則表達式上。我建議你提高正則表達式的技巧。 –

+0

你正在做的是改變正則表達式模式。我需要回答輸入的STRING是否可以更改,而不是模式。這不是他是相同的 – dimm