如何使用正则表达式获取特定数据?

时间:2013-01-29 08:34:11

标签: java regex

我输入的流包含以下数据:

---------------------------------------------
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正则表达式?

3 个答案:

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

如果您是程序员,真的需要深入了解正则表达式。它们是必需品之一。起初他们很难,但是一旦你'破解',你就不会忘记它。喜欢骑自行车。

答案 1 :(得分:1)

这将满足您的需求:

String version = yourLine.replaceAll(".*(v\\d+([.]\\d+){3}).*", "$1")

答案 2 :(得分:0)

这里不需要正则表达式

只需使用

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