Java 1.3 ORO Regex Problem

Diskutiere Java 1.3 ORO Regex Problem im Java/Mono/dotGNU Forum im Bereich Programmieren unter Linux/Unix; Hallo Forum, ich habe eine software die Leider unter Java 1.3_10 laufen muss. Als regex "framework" nutzte ich jakarta ORO. Mein Problem...

  1. keks

    keks nicht 1337 genug

    Dabei seit:
    17.01.2007
    Beiträge:
    401
    Zustimmungen:
    0
    Ort:
    Hessen
    Hallo Forum,

    ich habe eine software die Leider unter Java 1.3_10 laufen muss.
    Als regex "framework" nutzte ich jakarta ORO.

    Mein Problem ist, ich bekomme es nicht hin ORO zu überreden auf einen String ala "01.12.2009" zu matchen...
    ein regex von "([0-9]{1,2})" matcht ohne Probleme auf "09" (also das letzte vorkommen 2er Zahlen).
    Ich glaube mir raucht der Schädel zu sehr um das alleine zu lösen :headup:

    Code:
    import java.util.Date;
    import java.util.GregorianCalendar;
    
    import org.apache.oro.text.regex.*;
    
    public class RegexTester {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    
    		Date date = new Date();
    		int groups = 0;
    		PatternMatcher matcher;
    		PatternCompiler compiler;
    		Pattern pattern = null;
    		PatternMatcherInput input;
    		MatchResult result;
    
    		compiler = new Perl5Compiler();
    	    matcher  = new Perl5Matcher();
    		
    	    String strDate = "01.02.2009";
    		
    		/* eg 12.01.2009 or 1.2.09 */
    		//String strPatrn = "([0-9]{1,2})\\.([0-9]{1,2})\\.([0-9]{4})";
    	    //String strPatrn = "([0-9]{1,2}).([0-9]{1,2}).([0-9]{2,4})";
    	    String strPatrn = "([0-9]{1,2}).+([0-9]{1,2})";
    		try {
    			pattern = compiler.compile(strPatrn);
    		} catch (MalformedPatternException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    
    		input   = new PatternMatcherInput(strDate);
    		
    		System.out.println("Using str: " + strDate);
    		System.out.println("Using pattern: " + strPatrn);
    		
    		while(matcher.contains(input, pattern)) {
    			result = matcher.getMatch();  
    			groups = result.groups();
    			
    //			date = new Date(
    //					Integer.parseInt(result.group(0)),
    //					Integer.parseInt(result.group(1)),
    //					Integer.parseInt(result.group(2))		
    //			   	   );
    			System.out.println(result.group(0));
    			System.out.println(result.group(1));
    			System.out.println(result.group(2));
    		}
    	}
    
    }

    Liebe Grüße

    Keks
     
  2. Anzeige

    Anzeige

    Wenn du mehr über Linux erfahren möchtest, dann solltest du dir mal folgende Shellkommandos anschauen.


    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. keks

    keks nicht 1337 genug

    Dabei seit:
    17.01.2007
    Beiträge:
    401
    Zustimmungen:
    0
    Ort:
    Hessen
    So ich habe es mir selbst (gemacht:devil:) gelößt!

    Code:
    import java.util.Date;
    
    import org.apache.oro.text.regex.*;
    
    public class RegexTester {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    
    		Date date = new Date();
    		int groups = 0;
    		PatternMatcher matcher;
    		PatternCompiler compiler;
    		Pattern pattern = null;
    		PatternMatcherInput input;
    		MatchResult result;
    
                compiler = new Perl5Compiler();
    	    matcher  = new Perl5Matcher();
    		
    	    String strDate = "07.09.2009";
    		
    		/* eg 12.01.2009 or 1.2.09 */
    	      //String strPatrn = "([0-9]{1,2})\\.([0-9]{1,2})\\.([0-9]{4})";
    	      //String strPatrn = "([0-9]{1,2}).([0-9]{1,2}).([0-9]{2,4})";
    	        String strPatrn = "([0-9]{1,2})\\.([0-9]{1,2})\\.([0-9]{2,4})";
    		try {
    			pattern = compiler.compile(strPatrn);
    		} catch (MalformedPatternException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    
    		input   = new PatternMatcherInput(strDate);
    		
    		System.out.println("Using str: " + strDate);
    		System.out.println("Using pattern: " + strPatrn);
    		
    		while(matcher.contains(input, pattern)) {
    			result = matcher.getMatch();  
    			groups = result.groups();
    			
    
    			date = new Date(
    					Integer.parseInt(result.group(3))-1900, // Year - 1900
    					Integer.parseInt(result.group(2))-1, // Month 0-11 -> also decrement by 1!
    					Integer.parseInt(result.group(1))	 // Day of Month 1-31	
    			   	   );
    			System.out.println("result.group(0): " + result.group(0));
    			System.out.println("result.group(1): " + result.group(1));
    			System.out.println("result.group(2): " + result.group(2));
    			System.out.println("result.group(3): " + result.group(3));
    		}
    		System.out.println("New generated Date: \"" + date.toString()+ "\"");
    	}
    
    }
    Ausgabe ist:

    Code:
    Using str: 07.09.2009
    Using pattern: ([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{2,4})
    result.group(0): 07.09.2009
    result.group(1): 07
    result.group(2): 09
    result.group(3): 2009
    New generated Date: "Mon Sep 07 00:00:00 CEST 2009"
    Erkenntnis: group0 ist das ganze gespeicherte Ergebniss... UUUND ordentlich Lesen
    Grüße
    Keks!
     
Thema:

Java 1.3 ORO Regex Problem

Die Seite wird geladen...

Java 1.3 ORO Regex Problem - Ähnliche Themen

  1. Java 13 freigegeben

    Java 13 freigegeben: Java 13 ist wie geplant ein halbes Jahr nach Java 12 erschienen. Die neue Version implementiert insgesamt fünf Neuerungen. Neu in die Sprache...
  2. Hermes: JavaScript-Engine von Facebook

    Hermes: JavaScript-Engine von Facebook: Facebook hat Hermes, eine JavaScript-Engine zur Ausführung von React Native auf Android, vorgestellt. Hermes optimiert die Ausführung von...
  3. Durch Javascript generierte Webseiten parsen

    Durch Javascript generierte Webseiten parsen: Hallo zusammen, überlicherweise waren Webseiten immer ganz gut zu parsen, mittlerweile läd der Browser jedoch nur noch ein JavaScript von der...
  4. Werkstudent/ in als Mobile -Entwickler für Android (Java)

    Werkstudent/ in als Mobile -Entwickler für Android (Java): Werkstudent/ in als Mobile -Entwickler für Android (Java) Die DiOmega GmbH ist eine Agentur mit Sitz in Frankfurt am Main, die sich auf IT- und...
  5. Mobile -Entwickler für Android (Java) in Vollzeit (m/w)

    Mobile -Entwickler für Android (Java) in Vollzeit (m/w): Mobile -Entwickler für Android (Java) in Vollzeit (m/w) Die DiOmega GmbH ist eine Agentur mit Sitz in Frankfurt am Main, die sich auf IT- und...
  1. Diese Seite verwendet Cookies um Inhalte zu personalisieren. Außerdem werden auch Cookies von Diensten Dritter gesetzt. Mit dem weiteren Aufenthalt akzeptierst du diesen Einsatz von Cookies.
    Information ausblenden