簡體   English   中英

正則表達式:在第一次出現和最后一次出現之間獲取

[英]Regex: Get between first occurrence of one and last occurrence of another

這是字符串:

<html lang=3D"en-US"> <head> </head> <body> <div>  <script data-scope=3D"in=
boxmarkup" type=3D"application/json">
{
   "api_version": "1.0",
   "publisher": {
      "api_key": "some_api_key",
      "name": "Google Times"
   }
}
sdalfk jsdklfj slkdjf lskdjfl sjdlkf jsdlkj flsdkj flsdk jf

我怎樣才能只得到這部分?

{
   "api_version": "1.0",
   "publisher": {
      "api_key": "some_api_key",
      "name": "Google Times"
   }
}

真的無法弄清楚。 計划是稍后將其解析為JSON。

第一次出現是{ ,第二次出現是}

大括號。

我認為可能是答案{(?:\\n|.)*}

如果您確定大括號不能在其他地方,請刪除所有新行並使用以下命令:

var partYouNeed = yourString.match(/\{.*\}/)[0];

例:

 var str = '<html lang=3D"en-US"> <head> </head> <body> <div> <script data-scope=3D"in=\\ boxmarkup" type=3D"application/json">\\ {\\ "api_version": "1.0",\\ "publisher": {\\ "api_key": "some_api_key",\\ "name": "Google Times"\\ }\\ }\\ sdalfk jsdklfj slkdjf lskdjfl sjdlkf jsdlkj flsdkj flsdk jf'; var result = str.replace(/\\n|\\r/g, '') // remove all newlines .match(/\\{.*\\}/); // match anything inside curly braces if(result) console.log(result[0]); else console.log("nothing found!"); 

這是東西:

...
myString = myString.replace(/\s/g,'');
var jsonRegex = /.*{(.*)}.*/g;
var match = jsonRegex.exec(myString);
var jsonStr = match[1];
var myObject;
try {
  myObject = JSON.parse(jsonStr);
} catch (JSONException) {
  console.log('Error while parsing data: ', JSONException); 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM