문제

페이지 소스 인 텍스트 벽 중; 이와 같은 섹션에 대해 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*"([^"]*)"

그렇지 않으면 목록의 각 항목을 잡고 필요한 것들을 선택해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top