Синтаксический анализ javascript с сайта html

#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 «, что повышает производительность.