正则表达式获取Json字符串
<script type="text/javascript" src="/retail/retail-static/xx/scripts/ac-globalfooter.built.js">script>
<script id="__NEXT_DATA__" type="application/json">
{"props":{members:{
"Name":"_test".
"Age":30,
"HeadUrl":"http://www.baidu.com"
}},
"a":"123",
"b":"123",
"c":"123"}
script>
<script type="text/javascript" src="/retail/retail-static/xx/scripts/ac-globalfooter.js">script>
我希望使用正则表达式获取<script id="__NEXT_DATA__" type="application/json">script>中的json对象。我用的是C#。辛苦大家,麻烦大神了。
using System;
using System.Text.RegularExpressions;
namespace HelloWorldApplication
{
class HelloWorld
{
static void Main(string[] args)
{
string input = "<script type=\"text/javascript\" src=\"/retail/retail-static/xx/scripts/ac-globalfooter.built.js\"></script>" +
"<script id=\"__NEXT_DATA__\" type=\"application/json\">" +
"{\"props\":{members:{" +
"\"Name\":\"_test\"." +
"\"Age\":30," +
"\"HeadUrl\":\"http://www.baidu.com\""+
"}}," +
"\"a\":\"123\"," +
"\"b\":\"123\"," +
"\"c\":\"123\"}" +
"</script>" +
"<script type=\"text/javascript\" src=\"/retail/retail-static/xx/scripts/ac-globalfooter.js\"></script>";
string pattern = "(?<=<script id=\"__NEXT_DATA__\" type=\"application/json\">).*?(?=</script>)";
Regex reg = new Regex(pattern);
Match match = reg.Match(input);
string value = match.Groups[0].Value;
Console.WriteLine("json为:{0}", value);
Console.ReadKey();
}
}
}
const str = `
<script type="text/javascript" src="/retail/retail-static/xx/scripts/ac-globalfooter.built.js"></script>
<script id="__NEXT_DATA__" type="application/json">
{"props":{members:{
"Name":"_test".
"Age":30,
"HeadUrl":"http://www.baidu.com"
}},
"a":"123",
"b":"123",
"c":"123"}
</script>
<script type="text/javascript" src="/retail/retail-static/xx/scripts/ac-globalfooter.js"></script>
`
const reg = /<script[^>]+?\>(?<json>(?:[^<]|\n|\r)+?)<\/script\>/
console.log(reg.exec(str).groups.json)

using System.Text.RegularExpressions;
public class Program
{
public static void Main ()
{
// Define a regular expression for repeated words.
Regex rx = new Regex(@"\{[\s\S]*\}",
RegexOptions.Compiled | RegexOptions.IgnoreCase|RegexOptions.Multiline);
// Define a test string.
string text = "<script type=\"text/javascript\" src=\"/retail/retail-static/xx/scripts/ac-globalfooter.built.js\"></script>\n" +
"<script id=\"__NEXT_DATA__\" type=\"application/json\">\n" +
" {\"props\":{members:{\n" +
" \"Name\":\"_test\".\n" +
" \"Age\":30,\n" +
" \"HeadUrl\":\"http://www.baidu.com\"\n" +
" }},\n" +
" \"a\":\"123\",\n" +
" \"b\":\"123\",\n" +
" \"c\":\"123\"}\n" +
"</script>\n" +
"<script type=\"text/javascript\" src=\"/retail/retail-static/xx/scripts/ac-globalfooter.js\"></script>\n" +
"\n";
// Find matches.
MatchCollection matches = rx.Matches(text);
// Report the number of matches found.
Console.WriteLine("{0} matches found in:\n {1}",
matches.Count,
0);
// Report on each match.
foreach (Match match in matches)
{
GroupCollection groups = match.Groups;
Console.WriteLine("'{0}' ",
groups[0].Value);
}
}
}