2017-03-01 3 views
-4

2つのパラメータ(RegExパターンと文字列)と、文字列がパターンにマッチする大きい文字列(小さい文字列を含む)と一致しない場合は、単純なプログラムを書く必要があります。RegEx:パターンにマッチしない文字列が指定された場合、より大きな文字列(より小さな文字列を含む)が存在する場合、どのように定義するか?

例1 入力:「+ $ W + \ S + \ W^\」と「こんにちは」と一致していないが、最初の1が含まれているとの一致する文字列「こんにちは言葉」があるので、プログラムは「真」を返します

例2 入力パターン与えられた: "^(ABC)* $" と一致していない "CA" が、パターンに一致する文字列AB CA BC(CAが含まれている)があるので、プログラムはtrueを返します。

要するに、このような文字列が存在する場合(true/false)、プログラムは応答する必要があります。

C#(C++、Java)と任意のヘルプは高く評価されます。どのようにそれを行うには少なくともいくつかの方向に。

+1

whicあなたはこれまでに何を試しましたか? – jjj

+0

まず、パターンが実際の(正規の)表現であるトピックとの組み合わせで、 "表現"にマッチさせたい、純粋なシンプルテキストのようには呼んではいけません。最初のものを含み、与えられたパターンにマッチする "hello word"という式があるので、プログラムは "true"を返します。あなたは可能なテキストのリストを持っていますか、そして "こんにちは言葉"はそれらの一つでしょうか? – CBroe

+0

@jjj私はC#が必要ですが、C++、Javaもやります。 – dimm

答えて

0

問題は、あなたが渡している正規表現にあります。第一

  • 、BC、()(abc)*[]と一致ABCABCABCと同様に、しかし[abc]*は、B、C、AC、AB、AAAが一致する変更、二番目に$
  • 前にバックスラッシュ\を除去し、ヌル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

あなたがやっていることはregex PATTERNを変更することです。私は入力STRINGがパターンではなく、変更可能であれば答える必要があります。それは同じではない – dimm

関連する問題