如何使用Java正则表达式在JSON数组字符串中选择一个对象?
我有这个字符串(请注意,我必须将其用作字符串,而不是转换为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:/
我想使用正则表达式提取印花布猫对象。我试着用
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\'[^}]*}"