2017-03-01 1 views
-4

Ich muss ein einfaches Programm schreiben, das 2 Parameter (RegEx-Muster und String) und wenn String nicht übereinstimmt Antworten, ob es größere Zeichenfolge (mit kleineren) gibt, die Muster übereinstimmen kann.RegEx: Wenn eine Zeichenfolge gegeben wird, die nicht mit Muster übereinstimmt, wie zu definieren, wenn vorhanden größere Zeichenfolge (mit kleineren), die übereinstimmt?

Example1 Input: "^ \ w + \ s + \ w + $" und "Hallo" nicht übereinstimmen, aber Programm kehrt 'true', weil es Zeichenfolge "Hallo Wort" ist die erste enthält und paßt zu Muster gegeben

Example2 Input: "^ (abc) * $" und "CA" nicht übereinstimmen, aber Programm wird true zurück, weil es Zeichenfolge ab ca ist bc (enthält ca), die Muster übereinstimmt.

Kurz gesagt, das Programm muss antworten, ob eine solche Zeichenfolge existiert (true/false).

C# (C++, Java) und jede Hilfe wird geschätzt. Zumindest eine Richtung, wie es geht.

+1

whic h Sprache und was hast du bisher probiert? – jjj

+0

Bitte nennen Sie nicht reine reine Texte, die Sie auf "Ausdrücke" abgleichen wollen - in Kombination mit dem Thema, wo die Muster die eigentlichen (regulären) Ausdrücke sind, ist das ziemlich verwirrend. _ "Aber das Programm wird 'wahr' zurückgeben, weil es einen Ausdruck" Hallo Wort "gibt, der das erste enthält und mit dem gegebenen Muster übereinstimmt" _ - wo "ist das? Haben Sie eine Liste möglicher Texte und "Hallo Wort" wäre einer von ihnen? – CBroe

+0

@jjj Ich brauche C#, aber C++, Java wird auch tun. – dimm

Antwort

0

Das Problem ist mit der Regex, die Sie übergeben.

  • In ersten, entfernen Sie den umgekehrten Schrägstrich \ vor $
  • In zweiten, () mit [](abc)* Spiel abcabcabc ändern und ebenso aber [abc]* wird a, b, c, ac, ab, aaa, bc entspricht, null

In Java (von OP Kommentar: Java ist 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

Schau, diese 2 Regex'es sind nur Beispiele. Ich muss eine Regex und eine beliebige Zeichenfolge abrufen, und wenn die Zeichenfolge nicht übereinstimmt, muss ich antworten, ob diese Zeichenfolge "behoben" werden kann (die durch eine größere Zeichenfolge ersetzt wird, die vorherige enthält, die übereinstimmt). – dimm

+0

Wie ich bereits erwähnt habe, ist das Problem mit Ihrem Regulären Ausdruck. Ich schlage vor, dass Sie die Fähigkeiten in Regex verbessern. –

+0

Was Sie tun, ändert Regex-Muster. Ich muss antworten, wenn Eingabe STRING geändert werden kann, nicht Muster. Es ist nicht dasselbe – dimm

Verwandte Themen