【问题标题】:RegEx to parse javascript object data正则表达式解析 javascript 对象数据
【发布时间】:2016-04-24 08:06:04
【问题描述】:

在一串 HTML 中,我需要从 Javascript 对象中解析出值。 javascript 始终如下所示,因此我需要解析,因此我需要解析值“Ariat”和“Mens>Footwear>Cowboy Boots>Square Toe”,例如在双引号之间。我认为正则表达式可能是要走的路,但我以前从未使用过它,所以我希望得到一些关于正确方法的指导?也许是一个正则表达式的例子,还是我不应该使用正则表达式并走向不同的方向?

 <script type="text/javascript">
dataLayer=[{
"conversionType": "Viewed Product",
"conversionAttributes": [

{
"brand_name": "Ariat",
"id": 2464833,
"category" : "Mens>Footwear>Cowboy Boots>Square Toe",
"image": "http://demandware.edgesuite.net/aayu_prd/on/demandware.static/-/Sites-co-master-catalog/default/dwec67444c/images/productimages/237083_90751-mens-rambler-boot-wicker_large.jpg",
"name": "Mens Rambler Square Toe Boot",
"msrp": "159.95",
"price": "149.95",
"sku": "ARIAT-MRamblerSqToe",
"parentSku" :"ARIAT-MRamblerSqToe",
"vendor": "Ariat"
}
]
}];
</script>

【问题讨论】:

  • 嗨达林,如果我理解正确,你有一个 HTML 字符串,你想从中提取一个 JSON 编码的数据集?我问的原因是这听起来很简单,只需找到script 标签,将所有内容都取出,然后通过 JSON 解码器运行它。是这样,还是问题更复杂?
  • 使用 JSON 解析器,不要尝试编写原始正则表达式。
  • 另外,您尝试用什么语言解析 JSON? C# 还是 JavaScript?
  • 一般你不想从脚本标签加载json数据。最好使用某种 http 请求。如果它是 http 请求的结果,它可以更容易地用 JavaScript 解析。并且您的数据被分配给变量 dataLayer,因此您无需解析任何其他脚本中的任何内容,您可以通过 dataLayer 变量访问它。

标签: javascript c# regex


【解决方案1】:
Regex pattern = new Regex("\"((?:\\\"|[^\"])+)\" *: *\"((?:\\\"|[^\"])+)\");

var matches = pattern.Matches(data);

foreach (var match in matches)
{
    var varName = match.Groups[1].Value;
    var value = match.Groups[2].Value;
}

该模式基本上是说:找到开引号,然后是任意数量的 \" 或 ",然后是闭引号。然后是零个或多个空格、一个冒号、零个或多个空格,然后再次使用相同的引用模式。

【讨论】:

    猜你喜欢
    • 2010-09-29
    • 1970-01-01
    • 2011-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多