给定字符串后的正则表达式匹配

标签 regex

{{"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/

相关文章:

javascript - 用点替换逗号,用逗号替换点

java - 在字符串 "},"之后添加新行

php - is_date() 出现故障

javascript - 使用 JavaScript 获取字符串中的所有电子邮件地址

regex - 从 scala 进程运行 perl 命令

regex - 如何组合正则表达式中的行?

regex - 用破折号替换所有正斜杠

Javascript 使用正则表达式替换函数与多个匹配字符串

正则表达式提取 bash shell 中引号中的所有内容?

regex - Cloud Firestore 身份验证正则表达式