什么正则表达式可以用来提取标签中src
属性的值?iframe
问问题
740 次
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 回答