我正在研究一些套接字编程的东西并试图匹配一些字符串。格式如下:
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
答案 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]+\\.\\).*$