java 正则匹配json串
时间: 2023-06-30 21:10:32 浏览: 52
可以使用正则表达式来匹配JSON串,但是最好不要使用正则表达式来解析JSON,因为JSON规范比较复杂,而且会有很多特殊情况,使用正则表达式容易出现漏洞和错误。建议使用JSON解析库来解析JSON。
如果一定要使用正则表达式来匹配JSON串,可以使用如下的正则表达式:
```
String pattern = "\\{.*\\}";
String jsonString = "{\"name\":\"张三\",\"age\":18}";
boolean isMatch = jsonString.matches(pattern);
System.out.println(isMatch); // 输出 true
```
解释:
- `\\{` 表示 { 字符
- `.*` 表示匹配任意字符任意次数
- `\\}` 表示 } 字符
这个正则表达式可以匹配任意包含在 { 和 } 之间的字符串,即符合JSON格式的字符串。但是要注意,这个正则表达式只能匹配没有嵌套结构的JSON串,如果有嵌套结构,就无法完全匹配。因此,还是建议使用JSON解析库来解析JSON串。
相关问题
java 正则过滤json串
可以使用正则表达式过滤JSON串中的某些字符串。比如,假设我们想要过滤掉JSON串中的某个字段,可以使用如下代码:
```java
String jsonStr = "{\"name\":\"张三\",\"age\":18,\"gender\":\"male\"}";
String regex = "\"gender\":\"[^\"]+\",?";
String filteredJsonStr = jsonStr.replaceAll(regex, "");
System.out.println(filteredJsonStr);
```
上述代码中,我们使用了正则表达式 `\"gender\":\"[^\"]+\",?` 来匹配JSON串中的 `gender` 字段及其值,并将其替换为空字符串,从而达到过滤的效果。
Java用正则表达式匹配JSON数组
可以使用Java的正则表达式库,如java.util.regex.Pattern和java.util.regex.Matcher来匹配JSON数组。以下是一个示例代码:
```java
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class JsonArrayRegex {
public static void main(String[] args) {
String json = "{\"fruits\": [\"apple\", \"banana\", \"orange\"]}";
Pattern pattern = Pattern.compile("\"fruits\":\\s*\\[(.*?)\\]");
Matcher matcher = pattern.matcher(json);
if (matcher.find()) {
String fruits = matcher.group(1);
System.out.println(fruits); // 输出: "apple", "banana", "orange"
}
}
}
```
在上面的示例中,我们使用正则表达式`"fruits":\s*\[(.*?)\]`来匹配JSON中的`fruits`数组。这个正则表达式的含义是:
1. 匹配`"fruits":`
2. `\s*`匹配0个或多个空格
3. `\[`匹配左方括号`[`
4. `(.*?)`匹配0个或多个任意字符,非贪婪模式
5. `\]`匹配右方括号`]`
因为我们使用了非贪婪模式`(.*?)`,所以匹配到的结果是整个数组的内容,而不是以`[``]`为界限的整个字符串。最后我们使用`matcher.group(1)`来获取匹配到的第一个括号内的内容,也就是`"apple", "banana", "orange"`。