我有一个要求是在数据本身的JSON数据中找到双引号。在字符串中查找文本
例如:{“关键”:“值”,“密钥1”,“瓦尔” UE1“}
现在瓦尔双引号” UE1需要检索,而不是其他的双引号。
任何想法如何实现这一目标?
我有一个要求是在数据本身的JSON数据中找到双引号。在字符串中查找文本
例如:{“关键”:“值”,“密钥1”,“瓦尔” UE1“}
现在瓦尔双引号” UE1需要检索,而不是其他的双引号。
任何想法如何实现这一目标?
用于从双引号中提取数据的正则表达式为(?<=")[^"]*(?="))
。括号表示您可以用\1
或$1
提取的第一个捕获组。
但是,对于解析JSON(以及通常的解析标准),建议使用库;它将比只是一个不包含边缘情况的正则表达式更具可读性,可理解性和安全性(并不是说这里会有一些,而是将其作为一般建议)
例如,如果您使用Java,Gson
是一个很好的解析和生成JSON库;如果您使用JavaScript,只需使用内置的JSON
对象。如果你不使用这些语言中的任何一种,我肯定还有其他很好的库。
希望这有助于
如何: \"([^(?:\"[,}])]*\"[^(?:\"[,}])]*)\"[,}]
?
这个正则表达式在一个冒号后跟一个空格和一个双引号,另一个双引号后跟一个comman或者关闭大括号。这些文本之间的文本必须包含*,至少一个引号和一些*。
* something表示任何内容(包括空字符串),不包含引号,后跟逗号或关闭大括号,因为这会结束值。
应用于您的示例(更正以逗号替换逗号),它返回Val"ue1
。
String json = "{\"Key\": \"Value\", \"Key1\": \"Val\"ue1\"}";
Matcher m = Pattern.compile(": \"([^(?:\"[,}])]*\"[^(?:\"[,}])]*)\"[,}]").matcher(json);
while (m.find())
{
System.out.println(m.group(1));
}
您的JSON似乎对我无效。如果可以的话,要么逃脱这个丑陋的“,要么改为使用单引号。 – Antoine