{{"name":"alpha",
"age":"23",
"sex":male",
"location":"U.S"
}
{"name":"beta",
"age":"23",
"sex":male",
"location":"Cambodia"
}}
如果我给出一个名称,我的正则表达式应该返回该名称的位置。 假设名称作为变量给出,然后我尝试,
"name":"alpha"[\d\D]*"location":"(.+?)"
我总是用这个表达式得到最后一个位置。如何根据名称获取位置?有什么帮助吗?
最佳答案
你总是得到最后一个,因为 [\d\D]*
匹配之间的所有内容,并且正则表达式总是尝试尽可能匹配。如果您的正则表达式引擎知道非贪婪匹配(看起来确实如此,因为您自己在该位置使用了非贪婪匹配:+?
),您应该能够使用这个:
"name":"alpha"[\d\D]*?"location":"(.+?)"
关于给定字符串后的正则表达式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39780737/