模式是:
private static Pattern r = Pattern.compile("(.*\\..*\\..*)\\..*");
Run Code Online (Sandbox Code Playgroud)
字符串是:
sentVersion = "1.1.38.24.7";
Run Code Online (Sandbox Code Playgroud)
我做:
Matcher m = r.matcher(sentVersion);
if (m.find()) {
guessedClientVersion = m.group(1);
}
Run Code Online (Sandbox Code Playgroud)
我期待1.1.38,但模式匹配失败.如果我换到Pattern.compile("(.*\\..*\\..*)\\.*");
//注意我删除了"." 在最后一个*之前
然后1.1.38.XXX失败了
我的目标是在任何传入的字符串中找到(xxx).
我哪里错了?
问题可能是由于你的正则表达式的贪婪.尝试这种基于否定的正则表达式模式:
private static Pattern r = Pattern.compile("([^.]*\\.[^.]*\\.[^.]*)\\..*");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
984 次 |
| 最近记录: |