#javascript #android #html #regex #jsoup
#javascript #Android #HTML #регулярное выражение #jsoup
Вопрос:
У меня это как часть сайта html
<script type="text/javascript">
jwplayer('player_container').setup(
{
'width': '640',
'height': '384',
'players': [ {type: 'flash', src: '/player/player.swf'} ],
'file':'http://video.sibnet.ru/v/98a6a9525d30afd623457f445ca95199/1321852.mp4'
// .....
});
И я хочу преобразовать это значение ‘file’ в строку, но я не знаю, как это сделать. Этот код является лишь частью того, что я проанализировал с помощью jsoup (я заказал, чтобы он показывал все). Я попробовал онлайн-генератор регулярных выражений, но он этого не получает. Может быть, я просто опубликую то, что я пробовал:
String re1="(\'.*?\')";
String re2=".*?";
String re3="(\'.*?\')";
Pattern p = Pattern.compile(re1 re2 re3,Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
Matcher m = p.matcher(sfile);
while (m.find())
{
String strng1=m.group(1);
String httpurl1=m.group(2);
if(strng1=="'file'")
break;
}
Кто-нибудь может показать мне, как это сделать правильно?
Ответ №1:
Если вам нужно значение file
поля, тогда просто используйте это регулярное выражение:
Pattern p = Pattern.compile("'file' *: *'([^']*)'", Pattern.CASE_INSENSITIVE);
И используйте matcher.group(1)
свою ценность.
Комментарии:
1. Спасибо за решение и ссылку на демо. Я благодарен 🙂
Ответ №2:
Регулярное выражение неверно. Вместо этого используйте следующий:
"'file'.*?'(.*?)'"
Посмотреть демонстрацию регулярных выражений можно здесь.
Кроме того, это регулярное выражение устраняет необходимость проверять, равна ли первая захваченная группа « file
«, что повышает производительность.