Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Java正则表达式在JSON数组字符串中选择一个对象?_Java_Regex_String - Fatal编程技术网

如何使用Java正则表达式在JSON数组字符串中选择一个对象?

如何使用Java正则表达式在JSON数组字符串中选择一个对象?,java,regex,string,Java,Regex,String,我有这个字符串(请注意,我必须将其用作字符串,而不是转换为JSON) 或者为了更好的可读性:(对象之间没有空格) 我想使用正则表达式提取印花布猫对象。我试着用 String pattern = "{\'_id\':\'xyzr2\'.*}" 不幸的是,选择范围从印花布猫扩大到安哥拉猫: {'_id':'xyzr2','image':'http://127.0.0.1/abxr2.png','name':'Calico Cat'},\ {'_id':'ghjkl','image':'http:/

我有这个字符串(请注意,我必须将其用作字符串,而不是转换为JSON)

或者为了更好的可读性:(对象之间没有空格)


我想使用正则表达式提取印花布猫对象。我试着用

String pattern = "{\'_id\':\'xyzr2\'.*}"
不幸的是,选择范围从印花布猫扩大到安哥拉猫:

{'_id':'xyzr2','image':'http://127.0.0.1/abxr2.png','name':'Calico Cat'},\
{'_id':'ghjkl','image':'http://127.0.0.1/ghjkl.png','name':'Persian Cat'},\
{'_id':'ojr12','image':'http://127.0.0.1/ojr12.png','name':'Angora Cat'}
我需要什么样的正则表达式模式来隔离印花布猫? 预期结果:

{'_id':'xyzr2','image':'http://127.0.0.1/abxr2.png','name':'Calico Cat'}

您需要使其非贪婪,以获得尽可能小的匹配

String pattern = "{\'_id\':\'xyzr2\'.*?}"


或者使用下面的正则表达式

String pattern = "{\'_id\':\'xyzr2\'[^}]*}"



FYI:最好使用json解析器而不是硬编码的正则表达式,因为数据是有效的json格式。请参阅:

“我想使用正则表达式提取Calico Cat对象。”为什么不想使用JSON解析器?这是解析JSON的自然方法…我很好奇,你不想解析这个的原因是什么?这就是挑战施加的限制,这就是为什么。也是为了增进我对正则表达式的理解。
String pattern = "{\'_id\':\'xyzr2\'.*?}"
String pattern = "{\'_id\':\'xyzr2\'[^}]*}"