Regex gegen Regex prüfen

turmaline

Bekanntes Mitglied
Hallo Leute,

besstimmt hat jeder von Euch mal einen String gegen einen Pattern abgleichen müssen und das geht sehr einfach. In meinem Fall muss ich ein Pattern gegen einen Pattern abgleichen. Beim Pattern handelt es sich vor allem um Strings mit wildcards: ? und *

Ich musss also prüfen ob ein Pattern das andere "enthält".

Java:
import static org.junit.Assert.*;

import org.junit.Test;


public class TestStringMatchingWithWildCards
{

    @Test
    public void testMe()
    {
        assertTrue(checkStringsWithWildCards("a?aa", "a?aa"));
        assertFalse(checkStringsWithWildCards("a?aa", "a*aa"));
        assertFalse(checkStringsWithWildCards("a?aa", "a*?a"));
    }

    /**
     *
     * @param one
     * @param two
     * @return
     */
    private boolean checkStringsWithWildCards(String one, String two)
    {
        throw new RuntimeException("not implemented!");
    }

}

Kann mir jemand auf den Sprung helfen? Gruß, Madlena
 
Also so wie du dir das vorstellst wird das meines Wissens nicht funktionieren.

Du kannst mit Testdaten prüfen, ob beide Regex die selben(Teil-)Ergebnisse liefern.
 
Sehe ich auch so. Wer testet dann den Test? Kannst du mal zeigen wie du das mit String/Pattern gemacht hast, da das eigentlich genau so "einfach" funktionieren müsste.
 
Java:
final String[] input = "aa,aaa,aaaa,a".split(","); //true, true, false, false
		
final String pattern = "aa?a";
final String metaPattern = "[a-zA-Z][a-zA-Z]\\?[a-zA-Z]";
		
Matcher m = Pattern.compile(pattern).matcher(input[0]);
System.out.println(m.matches());
		
m = Pattern.compile(metaPattern).matcher(pattern);
System.out.println(m.matches());

So etwa ?
 
Java:
final String[] input = "aa,aaa,aaaa,a".split(",");
Das kann und sollte man so schreiben:
Java:
final String[] input = {"aa","aaa","aaaa","a"}
 

Zurück
Oben