[英]Pattern matching with string containing dots
模式是:
private static Pattern r = Pattern.compile("(.*\\..*\\..*)\\..*");
字符串是:
sentVersion = "1.1.38.24.7";
我做:
Matcher m = r.matcher(sentVersion);
if (m.find()) {
guessedClientVersion = m.group(1);
}
我期待1.1.38,但模式匹配失敗。 如果我改為Pattern.compile("(.*\\\\..*\\\\..*)\\\\.*");
//注意我刪除了“。” 在最后一個*之前
然后1.1.38.XXX
失敗
我的目標是在任何傳入的字符串中找到(xxx)。
我哪里錯了?
問題可能是由於你的正則表達式的貪婪。 嘗試這種基於否定的正則表達式模式:
private static Pattern r = Pattern.compile("([^.]*\\.[^.]*\\.[^.]*)\\..*");
讓你的.*
比賽不情願 ?
Pattern r = Pattern.compile("(.*?\\..*?\\..*?)\\..*");
否則.*
匹配整個String
值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.