如何从输出文件中提取特定的oracle版本号

时间:2016-06-30 08:51:15

标签: java regex

我想从文本文件中提取Oracle版本号。 我的文本文件数据: -

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

所以我想要的只是oracle主要版本(例如: - 11.2.0.2.0 - > 11)

我有工作代码,但想知道这个或任何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]);
                }
             }
          }
     }

2 个答案:

答案 0 :(得分: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;
  }
}

答案 1 :(得分:0)

您可以使用这个简单的正则表达式:

  

(\ d +)。(\ d。)+ \ d

第一个找到的组是版本号。

以下是代码示例:

   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));
        }
      }
 }