C# 웹 페이지 소스를 구문 분석합니다
-
05-09-2019 - |
문제
페이지 소스 인 텍스트 벽 중; 이와 같은 섹션에 대해 video_id, l 및 t를 따옴표없이 가져와야합니다.
"video_id": "luoikmxsucw", "l": 105, "sk": "-2fl6aank__e49crzf6_q8f7ybpwdb9qr", "fmt_map": "35/640000/9/115,34/0/9/0/05/55/ 0/7/0/0 ","t ":"vjvqa1ppcfmbytdhqxuip5vtm856lwh7lxz6lh6nzag = ",
다음이 필요합니다
luoikmxsucw
105
vjvqa1ppcfmbytdhqxuip5vtm856lwh7lxz6lh6nzag =
"정규 표현"을 사용하라는 지시를 받았지만 어떻게 사용하는지 잘 모르겠습니다. 어떤 도움이든 좋을 것입니다 :)
해결책
사용하는 정수는 다음과 같습니다.
\"video_id\":\s*\"(?<videoID>.*?)\"(?:.*?)\"l\":\s*(?<l>.*?),(?:.*?)\"t\":\s*\"(?<t>.*?)\"
다음은 여러분을 시작하고 실행할 수있는 샘플 코드입니다.
string sample = "\"video_id\": \"lUoiKMxSUCw\", \"l\": 105, \"sk\": \"-2fL6AANk__E49CRzF6_Q8F7yBPWdb9QR\", \"fmt_map\": \"35/640000/9/0/115,34/0/9/0/115,5/0/7/0/0\", \"t\": \"vjVQa1PpcFMbYtdhqxUip5Vtm856lwh7lXZ6lH6nZAg=\",";
string regPattern = "\\\"video_id\\\":\\s*\\\"(?<videoID>.*?)\\\"(?:.*?)\\\"l\\\":\\s*(?<l>.*?),(?:.*?)\\\"t\\\":\\s*\\\"(?<t>.*?)\\\"";
Regex reg = new Regex(regPattern, RegexOptions.Singleline);
if (reg.IsMatch(sample))
{
Match m = reg.Match(sample);
GroupCollection gColl = m.Groups;
Console.WriteLine("VideoID:{0}", gColl["videoID"].Value);
Console.WriteLine("l:{0}", gColl["l"].Value);
Console.WriteLine("t:{0}", gColl["t"].Value);
}
"system.text.regularexpressions"를 가져 오는 것을 잊지 마십시오. ;-)
다른 팁
이 사이트는 학습에 적합하다고 생각하지만 코드가 작업을 수행 할 것으로 예상하면 죄송합니다 ..
이것은 좋은 시작처럼 보입니다. C#의 정규 표현식 사용
그리고 또한 이 지역 매우 도움이됩니다
순서가 항상 동일하다면이 정규식을 사용할 수 있습니다.
"video_id"\s*:\s*"([^"]*)"\s*,\s*"l"\s*:\s*(\d+)\s*(?:,\s*"[^"]*"\s*:\s*"[^"]*"\s*)*,\s*"t"\s*:\s*"([^"]*)"
그렇지 않으면 목록의 각 항목을 잡고 필요한 것들을 선택해야합니다.
제휴하지 않습니다 StackOverflow