/ / regex दिए गए string के बाद मैच करता है - regex

दिए गए स्ट्रिंग के बाद रेगेक्स मैच - रेगेक्स

{{"name":"alpha",
"age":"23",
"sex":male",
"location":"U.S"
}
{"name":"beta",
"age":"23",
"sex":male",
"location":"Cambodia"
}}

यदि मैं एक नाम देता हूं, तो मेरे regex को उस नाम के लिए स्थान वापस करना चाहिए मान लीजिए कि नाम एक चर के रूप में दिया गया है, तो मैं कोशिश करता हूं,

"name":"alpha"[dD]*"location":"(.+?)"

मुझे हमेशा इस अभिव्यक्ति के साथ अंतिम स्थान मिलता है। मुझे नाम के आधार पर स्थान कैसे मिल सकता है? कोई मदद?

उत्तर:

जवाब के लिए 2 № 1

आपको हमेशा आखिरी मिलता है क्योंकि [dD]* के बीच में सब कुछ मेल खाता है और Regexes हमेशा जितना संभव हो उतना मैच करने की कोशिश करता है। अगर आपके रेगेक्स इंजन के बारे में पता है गैर लालची मैच (और ऐसा लगता है जैसे यह करता है क्योंकि आप स्थान पर एक गैर-लालची मैच का उपयोग करते हैं: +?), आपको इसका उपयोग करने में सक्षम होना चाहिए:

"name":"alpha"[dD]*?"location":"(.+?)"