想从html内容中检测具有特殊src的iframe代码
<iframe width="100% !important" height="800px" src="//specical.com/external/widget/api.php?height=800px&width=640px& 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*)(?:[^>]*)>"
似乎不起作用。
谢谢!
答案 0 :(得分:1)
而且,这可行
<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
答案 1 :(得分:0)
这似乎可行:
val patternString = "(?:<iframe\\s)(?:[^<]*)(?:src=\\s*)(?:\"\\/\\/specical\\.com/external\\/widget\\/api.php?\\s*?)(?:[^>]*)>"
val pattern = Pattern.compile(patternString)
val matcher = pattern.matcher(str)
我确定有更好的选择