2016-06-30 13 views
0

Ich möchte Oracle-Versionsnummer aus einer Textdatei extrahieren. meine Textdatei Daten: -So extrahieren Sie bestimmte Oracle-Versionsnummer aus der Ausgabedatei

Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production 
PL/SQL Release 11.2.0.2.0 - Production 
CORE 11.2.0.2.0 Production 
TNS for 64-bit Windows: Version 11.2.0.2.0 - Production 
NLSRTL Version 11.2.0.2.0 - Production 
Done processing file 

so, was ich hier will, ist nur Orakel Hauptversion (zB: - 11.2.0.2.0 -> 11)

Ich habe Code arbeiten, aber wissen wollen, jeder anderen besten Ansatz für diese oder jede RegEx.

 EZFileReader reader = new EZFileReader(output_file); 
     if (reader.hasMoreLines()) 
     { 
      String version_line = reader.readNextLine().trim(); 
      if (version_line != null) 
      { 
      String[] release = version_line.split(" "); 
      if (release.length > 0) 
      { 
       String[] version = release[6].split("\\."); 
       if (version[0] != null) 
       { 
        version_value = Integer.parseInt(version[0]); 
       } 
      } 
      } 
    } 

Antwort

0
Pattern pattern = Pattern.compile("(\\d+)(?:\\.\\d+){4}"); 

EZFileReader reader = new EZFileReader(output_file); 
Integer version = null; 
while(reader.hasMoreLines()) 
{ 
    Matcher m = pattern.matcher(reader.readNextLine()); 
    if (m.find()) 
    { 
    version = Integer.parseInt(m.group(1)); 
    break; 
    } 
} 
0

können Sie diese einfache regex verwenden. (. \ D)

(\ d +) + \ d

Die erste gefundene Gruppe ist eine Versionsnummer .

Im Folgenden finden Sie Codebeispiel:

EZFileReader reader = new EZFileReader(output_file); 
    if (reader.hasMoreLines()) 
    { 
     String version_line = reader.readNextLine(); 
     if (version_line != null) 
     { 
     Pattern pattern = Pattern.compile("(\\d+)\\.(\\d+\\.)+\\d+"); 
     Matcher matcher = pattern.matcher(version_line); 

     if(matcher.find()) { 
      version_value = Integer.parseInt(matcher.group(1)); 
     } 
     } 
} 
+0

Der reguläre Ausdruck muss '\\' als Escape-Zeichen innerhalb der Zeichenfolge. 'reader.readNextLine()' sollte nicht 'null' sein, wenn 'reader.hasMoreLines()' und wenn es dann '.trim()' ist, wird es zu einem Fehler führen, bevor Sie zu der Prüfung kommen. Abgesehen davon ist es fast ein Duplikat meiner Antwort. – MT0

+0

Ja, Sie haben Recht. Es ist jetzt korrigiert. – mariuszs80

+0

Sie haben immer noch "\." Im regulären Ausdruck. – MT0

Verwandte Themen