我是Regex的新手。 我有一个String,我从中尝试获取值。
String conditionExpression= "{action==\"Submit\" && orgType== \"supply\"}";
Matcher matcher = Pattern.compile("(?<=orgType==)\"[^\"]+\"").matcher(conditionExpression);
if (matcher.find()) {
orgType = matcher.group().replaceAll("\"", "");
}
输入将为String:"{action=="Submit" && orgType== "supply"}"
输出将是orgType的值:supply
尝试使用Regex获取orgType,但返回null。这有什么不对吗?
答案 0 :(得分:0)
您需要考虑等号周围可能出现的空格。此外,如果您在[^"]+
周围使用捕获组,则无需对匹配值进行后处理。
这是一个固定的代码:
String orgType = "";
String conditionExpression= "{action==\"Submit\" && orgType== \"supply\"}";
Matcher matcher = Pattern.compile("orgType\\s*==\\s*\"([^\"]*)\"").matcher(conditionExpression);
if (matcher.find()) {
orgType = matcher.group(1);
}
System.out.println(orgType); // => supply
请参阅Java demo
模式的\\s*==\\s*
部分与用0+空格字符括起的==
匹配。
([^\"]*)
模式是capturing group,它将子匹配值推送到您可以通过matcher.group(1)
检索的第1组(稍后无需删除双引号)。