[英]How to parse key:value pair on JSON-like string with RegEx on JavaScript?
我正在努力解析类似JSON的字符串中的key:value对。 我知道人们会自动说“为此使用JSON.parse()
!” 我绝对同意。 问题是我不是在处理JSON字符串,而是在处理类似JSON的字符串。
至少我尝试用JSON.parse解析这些字符串的尝试都失败了(我尝试清理字符串,以便JSON.parse不会抱怨格式错误的字符串)
我的问题是类似JSON的字符串有时会被截断,而另一些时候则不会。 可以肯定的是,关键的publicProfileUrl
始终在文本中(或者至少与观察结果一致),我需要解析其值:
例如,这是字符串的示例:
%%"fullName":"Eduardo Saverin",
"contactInfo":{
"publicProfileUrl":"https://sg.linkedin.com/in/saverin",
"twitterAccounts":["esaverin"],
"websites":[]},
"industry":"Internet",%%
我唯一感兴趣的是解析publicProfileUrl的值。
这是我最近的尝试:
\"publicProfileUrl\":\"(.*)\",
但它一直与最后一个逗号匹配(我仅出于格式化目的添加了换行符,但原始字符串没有任何换行符)。
这是原始字符串:
%%"fullName":"Eduardo Saverin","contactInfo":{"publicProfileUrl":"https://sg.linkedin.com/in/saverin","twitterAccounts":["esaverin"],"websites":[]},"industry":"Internet",%%
所以,像
\"publicProfileUrl\":\"(.*?)\",
应该管用。
如果您想绝对安全:
正如其他人指出的那样,这并不总是“水密的”。 在您当前的应用程序(url!)中,这可能不是问题,但在一般情况下,我们可能会遇到转义的"
后跟逗号,就像在"this is \\"it\\", no doubt!"
,这应该是成为目标字符串的一部分。到目前为止,该模式会导致目标字符串过早结束。如果我们通过在搜索组中添加[^\\\\]
稍微修改正则表达式,那么即使是这种讨厌的小模式也会导致我们不再有害:
\"publicProfileUrl\":"(.*?[^\\])\",
对于组匹配,添加?
这意味着尽可能少
\"publicProfileUrl\":\"(.*?)\",
尝试在捕获中排除双引号:
\"publicProfileUrl\":\"([^"]*)\",
通常,换行会解决贪婪匹配问题
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.