我的Java程序,在某些點上,接收包含像本實施例中一對夫婦鍵值屬性的字符串:這種模式的正則表達式是什麼?
param1=value Param2=values can have spaces PARAM3=values cant have equal characters
的參數名稱/鍵由單個字(AZ,AZ,由_和0-9),然後是=
字符(不能用空格分隔)並且是值。該值是一個可以包含空格的文本,並且可以一直保留到字符串的結尾或另一個參數的開頭。 (這是一個字,後跟equals和它的值等)
我需要從此字符串中提取Properties
對象(字符串到字符串映射)。我試圖使用正則表達式來查找每個鍵值集。代碼是這樣的:
public static String createProperties(String str) {
Properties prop = new Properties();
Matcher matcher = Pattern.compile(some regex).match(str);
while (matcher.find()) {
String match = matcher.group();
String param = ...; // What comes before '='
String value = ...; // What comes after '='
prop.setProperty(param, value);
}
return prop;
}
但是,正則表達式寫不工作。
String regex = "(\\w+=.*)+";
由於.*
告訴正則表達式得到「任何東西」,它發現,它會匹配整個字符串。我想告訴正則表達式搜索,直到找到另一個\\w=.*
。 (字後跟等於和之後的東西)
我怎麼能寫這個正則表達式?或者,使用正則表達式的問題的另一種解決方案是什麼?
完美!非常感謝你。我不知道要使用負向預測,我會學習以更好地理解正則表達式。 –