我想从文本文件中提取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]);
}
}
}
}
答案 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));
}
}
}