0

什么正则表达式可以用来提取标签中src属性的值?iframe

4

5 回答 5

4

如果你真的在使用 Java(不是 JavaScript)并且你只有iframe,你可以试试正则表达式:

(?<=src=")[^"]*(?<!")

例如:

private static final Pattern REGEX_PATTERN = 
        Pattern.compile("(?<=src=\")[^\"]*(?<!\")");

public static void main(String[] args) {
    String input = "<iframe name=\"I1\" id=\"I1\" marginwidth=\"1\" marginheight=\"1\" height=\"430px\" width=\"100%\" border=\"0\" frameborder=\"0\" scrolling=\"no\" src=\"report.htm?view=country=us\">";

    System.out.println(
        REGEX_PATTERN.matcher(input).matches()
    );  // prints "false"

    Matcher matcher = REGEX_PATTERN.matcher(input);
    while (matcher.find()) {
        System.out.println(matcher.group());
    }
}

输出:

report.htm?view=country=us
于 2013-08-26T02:23:03.863 回答
0

正则表达式有点贵,除非你有其他简单的解决方案,否则不要使用它,在 java 中试试这个

String src="<iframe name='I1' id='I1' marginwidth='1' marginheight='1'" + 
" height='430px' width='100%' border='0' frameborder='0' scrolling='no'" +
" src='report.htm?view=country=us'>";

int position1 = src.indexOf("src") + 5;
System.out.println(position1);

int position2 = src.indexOf("\'", position1);
System.out.println(position2);

System.out.println(src.substring(position1, position2));

输出:

134
160
report.htm?view=country=us
于 2013-08-25T19:16:49.873 回答
0

我想说看看dom解析。从那里它将与javascript答案非常相似。Dom 解析器会将 html 转换为您可以执行的文档:

iframe = document.getElementById("I1"); src = iframe.getAttribute("src");

于 2013-08-25T19:09:41.980 回答
-1

如果您的意思是 javascript 而不是 java:

var iframe = document.getElementById("I1");
var src = iframe.getAttribute("src");
alert(src); //outputs the value of the src attribute
于 2013-08-25T18:36:03.017 回答
-1
 src="(.*?)"

正则表达式将匹配src="report.htm?view=country=us",但您只会"在第一个(也是唯一的)子匹配中找到介于 之间的部分。

如果您只想在 iframe 中匹配 src-attributes,请执行以下操作:

<iframe.*?src="(.*?)".*?>

但在某些极端情况下,由于 HTML 固有的不规则性质,这可能会失败。有关此问题的有趣咆哮,请参阅RegEx match open tags except XHTML self-contained tags的最佳答案。

于 2013-08-25T18:39:02.480 回答