-1

我有以下数据的输入流:

---------------------------------------------
manil@manil-ubvm:~$ db2level
DB21085I  Instance "manil" uses "64" bits and DB2 code release "SQL10010" with 
level identifier "0201010E".
Informational tokens are "DB2 v10.1.0.0", "s120403", "LINUXAMD64101", and Fix 
Pack "0".
Product is installed at "/home/manil/sqllib".
---------------------------------------------

从上面我需要v10.1.0.0存储在一个字符串变量中。

如何使用java正则表达式做到这一点?

4

3 回答 3

1

使用类似这样的东西来捕获版本模式:

import java.util.regex.*;

    public class RTest {

            public static void main(String [] args) {
                    String raw_data = "asdkgjasdbf984 sdkjfashfiu 4qwsadkfjnv w98sa-asdf08gywbfsd v1231.123.12.11.1 fkjsdfn9823isd";
                    Pattern version_find = Pattern.compile("v[\\d+\\.?]+");
                    Pattern directory_find = Pattern.compile("[\\/[^\\/]+]+");
                    Matcher version_finder = version_find.matcher(raw_data);
                    while(version_finder.find()) {
                          System.out.println(version_finder.group());
                    }
            }
    }

输出是:

v1231.123.12.11.1
/isd/asdasd2903 ajshdaq09r34/adsj 38/

如果你是一名程序员,你真的需要深入理解正则表达式。它们是必需品之一。一开始它们很难,但一旦你“破解它们”,你就不会忘记它。就像骑自行车一样。

于 2013-01-29T08:49:59.610 回答
1

这将满足您的需求:

String version = yourLine.replaceAll(".*(v\\d+([.]\\d+){3}).*", "$1")
于 2013-01-29T08:56:25.737 回答
0

你在这里不需要正则表达式

只需使用

String .contain()方法和String substring()

于 2013-01-29T08:39:02.643 回答