正则表达式从字符串

时间:2018-04-09 08:01:57

标签: java regex

我是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。这有什么不对吗?

1 个答案:

答案 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组(稍后无需删除双引号)。