簡體   English   中英

正則表達式中的雙引號

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM