我应该在这里使用什么正则表达式?

时间:2011-11-23 22:00:09

标签: java regex

我正在研究一些套接字编程的东西并试图匹配一些字符串。格式如下:

1.) Some text

其中一个代表任何数字,而某些文字指的是任何东西(包括字母,数字,引号等)。

我尝试使用[0-9]*\\.\\).*,但它没有返回匹配项。我做错了什么,如何解决?

修改 根据要求,这是我的代码:

/** Parses data returned by the server */
public void getSocketData(String data) {
    String[] lines = data.split("\\r?\\n");
    this.fileHosts = new String[lines.length];
    Pattern p = Pattern.compile("[0-9]*\\.\\).*");
    for (int i = 0; i < lines.length; i++) {
        String line = lines[i];
        if (p.matcher(line).matches()) {
            //The format is: 1.) "b.jpg" from "192.168.1.101:40000"
            String[] info = line.split("\"");
            this.fileHosts[i] = info[3]; //this should now contain <addr:port>
            System.out.println("Adding " + fileHosts[i] + " to fileHosts");
        }
        else {
            System.out.println("No Match!");
        }
    }
}//getSocketData

1 个答案:

答案 0 :(得分:2)

这对我有用:

public static void main(String args[]) {
    String s = "1.) Some text";

    System.out.println(s.replaceFirst("^[0-9]+\\.\\).*$","matched"));
}

输出:

matched

编辑:与以下内容相同:

String s = "1.) \"b.jpg\" from \"192.168.1.101:40000\"";

这是代码中注释的示例

EDIT2:我也尝试了你的代码:

        String s = "1.) \"b.jpg\" from \"192.168.1.101:40000\"";
        Pattern p = Pattern.compile("^[0-9]+\\.\\).*$"); // works also if you use * instead of +
        if (p.matcher(s).matches()) {
            System.out.println("match");
        }
        else {
            System.out.println("No Match!");
        }

结果是

match

尝试使用此正则表达式:^[0-9]+\\.\\).*$