Как сопоставить конкретную часть с n-м индексом конкретного символа?

У меня есть входные данные как,

 "Thumbnail":"/images/7.0.2.5076_1/spacer.gif","URL":"http://id800/home/LayoutManager/l1.html/1407462681_292l1.html2_1398567201/"

И я хочу соответствовать части l1.html. Это может быть что угодно. Итак, я хочу сопоставить часть URL, которая происходит перед вторым последним вхождением / и после третьего последнего вхождения /. Эта часть либо цифра, буквенно-цифровая, либо буквенно-цифровая с расширением .html. поэтому я хочу сопоставить часть между 3-м и 2-м / от конца. Я пробовал много комбинаций, но так и не смог придумать. Любая помощь будет здорово.


person user2745246    schedule 02.12.2015    source источник
comment
Это похоже на объект JSON, получить значение из JSON с помощью ключа URL, разделить на / и получить предпоследнее значение из массива.   -  person Tushar    schedule 02.12.2015
comment
Я получаю это как строковое значение в коде позади. Я не могу использовать внешнюю библиотеку для этого.   -  person user2745246    schedule 02.12.2015
comment
Регулярное выражение \"URL\"\:\"http[s]?\:\/\/[^\/]+\/[^\/]+\/[^\/]+\/([^\/]+)\/   -  person Mayur Koshti    schedule 02.12.2015
comment
@MayurKoshti это будет соответствовать "URL":"http://id800/home/LayoutManager/l1.html всей этой части   -  person Mahesh    schedule 02.12.2015
comment
Вы что-нибудь пробовали (+ у вас есть определенные сомнения в программировании и вы хотите учиться и расти как программист) или вы просто ожидаете, что кто-то будет работать на вас бесплатно?   -  person varocarbas    schedule 02.12.2015
comment
@varocarbas Я пробовал много комбинаций за последние 3-4 часа, но не смог придумать ничего полезного. И все комбинации, которые я пробовал, были неправильными, поэтому не включались в вопрос.   -  person user2745246    schedule 02.12.2015
comment
@CoderofCode Вы знаете, какое действие позволит избежать комментариев, подобных тому, что я написал выше + отрицательных голосов + проголосования за отсрочку + получение ответа как можно быстрее? Просто напишите, что вы пробовали; твой лучший выстрел. Это может быть неправильно (вы здесь для чего-то). Ошибки вообще не проблема; хотя некоторым людям может не понравиться отсутствие каких-то усилий/знаний.   -  person varocarbas    schedule 02.12.2015
comment
Вот пример десериализации JSON.   -  person Wiktor Stribiżew    schedule 02.12.2015


Ответы (2)


Шаблон:

\".+?(\w+\.\w{3,5})\/.+?\"
  • \" будет соответствовать начальной и конечной цитате
  • .+? будет соответствовать любому количеству символов
  • \w+ будет соответствовать любому количеству слов
  • \. будет соответствовать .(точка)
  • \w{3,5} будет соответствовать любому слову длиной 3-5 символов.
  • \/ будет соответствовать /(косая черта)
  • () эти скобки захватываются в отдельную группу

Код в действии:

string pattern = "\".+?(\\w+\\.\\w{3,5})\\/.+?\"";
string text = "\"Thumbnail\":\"/images/7.0.2.5076_1/spacer.gif\",\"URL\":\"http://id800/home/LayoutManager/l1.html/1407462681_292_2_2_1398567201/\"";

MatchCollection matches = Regex.Matches(text, pattern);
if (matches != null && matches[0].Groups != null)
{
    string value = matches[0].Groups[1].Value; //Output: l1.html
}
person SiD    schedule 02.12.2015

Вы не предоставили всю строку JSON, но я думаю, что мой фрагмент поможет вам получить то, что вы хотите, в любом случае без регулярного выражения. Добавьте ссылку на System.Web.Extensions и используйте следующий код:

Dim s As String = "[{""Thumbnail"":""/images/7.0.2.5076_1/spacer.gif"",""URL"":""http://id800/home/LayoutManager/l1.html/1407462681_292/2_1398567201/""}]" ' "[{""application_id"":""1"",""application_package"":""abc""},{""application_id"":""2"",""application_package"":""xyz""}]"
Dim jss As New System.Web.Script.Serialization.JavaScriptSerializer()
Dim dict = jss.Deserialize(Of List(Of Object))(s)
For Each d In dict
    For Each v In d
       If v.Key = "URL" Then
           Dim tmp = v.Value.Trim("/"c).ToString().Split("/"c)
           MsgBox(tmp(tmp.Length - 2))
       End If
    Next
Next

Результат:

введите здесь описание изображения

Нужную подстроку можно получить без регулярного выражения, просто разделив значение на / и обратившись к предпоследнему элементу.

person Wiktor Stribiżew    schedule 02.12.2015