kotlin, как найти совпадение тега iframe со специальным src в html - PullRequest
0 голосов
/ 11 декабря 2018

Хотел бы обнаружить из html-содержимого тег iframe со специальным src

<iframe width="100% !important" height="800px" src="//specical.com/external/widget/api.php?height=800px&amp;width=640px&amp; blablabal" ...... ></iframe>

, единственная важная часть:

это iframe и имеет src = "//specical.com/external/widget/api.php ?, и часть src может быть размещена в другом месте строки iframe.
Не заботьтесь о том, что еще находится в iframe.

какиспользовать регулярные выражения в kotlin, чтобы найти совпадение?

Я сделал одно:

val patternString = "(?:<iframe\\s)(?:[^<]*)(?:src=\\s*)(?:\"//specical.com/external/widget/api.php\"\\s*)(?:[^>]*)>"

, кажется, не работает.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Также это работает

<iframe(?=\s)(?=(?:[^>"']|"[^"]*"|'[^']*')*?\ssrc\s*=\s*(?:(['"])(?:(?!\1)[\S\s])*?(?:specical\.com/external/widget/api\.php?)(?:(?!\1)[\S\s])*?\1))\s+(?:"[\S\s]*?"|'[\S\s]*?'|[^>]*?)+>

https://regex101.com/r/gUEfvy/1

 < iframe
 (?= \s )
 (?=                           # Asserttion for:  src  (a pseudo atomic group)
      (?: [^>"'] | " [^"]* " | ' [^']* ' )*?
      \s src \s* = \s* 
      (?:
           ( ['"] )                      # (1)
           (?:
                (?! \1 )
                [\S\s] 
           )*?
           (?:                           # 
                specical\.com/external/widget/api\.php? 
           )
           (?:
                (?! \1 )
                [\S\s] 
           )*?
           \1 
      )
 )
                               # Have the src attribute, just match the rest of tag
 \s+ 
 (?: " [\S\s]*? " | ' [\S\s]*? ' | [^>]*? )+

 >                             # End  tag
0 голосов
/ 12 декабря 2018

это похоже на работу:

val patternString = "(?:<iframe\\s)(?:[^<]*)(?:src=\\s*)(?:\"\\/\\/specical\\.com/external\\/widget\\/api.php?\\s*?)(?:[^>]*)>"
val pattern = Pattern.compile(patternString)
val matcher = pattern.matcher(str) 

я уверен, что есть лучший

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...