[英]Double quotes in Regular expression
如何使用正則表達式在雙引號內獲取字符串?
我有以下字符串:
<img src="http://yahoo.com/img1.jpg" alt="">
我想得到字符串http://yahoo.com/img1.jpg alt=""
外面。 如何使用正則表達式做到這一點?
我不知道你為什么也想要 alt 標簽,但是這個正則表達式可以滿足你的要求:第 1 組是 url,第 2 組是 alt 標簽。 如果img和src之間可以有幾個空格,並且'='周圍可以有空格,我可能會稍微修改一下正則表達式
Pattern p = Pattern.compile("<img src=\"([^\"]*)\" (alt=\"[^\"]*\")>");
Matcher m =
p.matcher("<img src=\"http://yahoo.com/img1.jpg\" alt=\"\"> " +
"<img src=\"http://yahoo.com/img2.jpg\" alt=\"\">");
while (m.find()) {
System.out.println(m.group(1) + " " + m.group(2));
}
Output:
http://yahoo.com/img1.jpg alt=""
http://yahoo.com/img2.jpg alt=""
你可以這樣做:
Pattern p = Pattern.compile("<img src=\"(.*?)\".*?>");
Matcher m = p.matcher("<img src=\"http://yahoo.com/img1.jpg\" alt=\"\">");
if (m.find())
System.out.println(m.group(1));
但是,如果您要解析 HTML,請考慮使用一些庫:正則表達式不是解析 HTML 的好主意。 我對jsoup有很好的體驗:這是一個例子:
String fragment = "<img src=\"http://yahoo.com/img1.jpg\" alt=\"\">";
Document doc = Jsoup.parseBodyFragment(fragment);
Element img = doc.select("img").first();
String src = img.attr("src");
System.out.println(src);
這應該做的工作:
String url = "";
Pattern p = Pattern.compile("(?<=src=\")[^\"]*(?=\")");
Matcher m = p.matcher("<img src=\"http://yahoo.com/img1.jpg\" alt=\"\">");
if (m.find())
url = m.group());
解析器將獲取除"
after src="
和before "
之外的每個字符
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.