带有空格的断开链接的正则表达式

Regex for broken links with whitespaces

我正在使用这个正则表达式

private static final String HREF_PATTERN = 
    "\s*(?i)href\s*=\s*(\"([^\"]*\")|'[^']*'|([^'\">\s]+))";

得到 link
 <a href=www.example.com/1234 5678>

URL 格式错误。它包含一个空格。问题是我想得到整个 link 包括“5678”,但我只得到 "www.example.com/1234".

我不太擅长正则表达式。有人可以提供一个有效的正则表达式,以便我可以获得整个 url "www.example.com/1234 5678".

谢谢

The external program creates an html Email with several <a href=www.example.com/1234 5678> tags.

假设您无法在源级别修复它,您可以尝试使用正则表达式修复它。

如果href属性是唯一的属性,你就不用关心=后面的空格了。从您的模式中删除 \s,它将起作用。

private static final String HREF_PATTERN = 
   "(?i)\s*href\s*=\s*(\"([^\"]*\")|'[^']*'|([^'\">]+))";
                                                     ^

如果您有带值的属性,则必须使用前瞻:

private static final String HREF_PATTERN = 
    (?i)\s*href\s*=\s*(\"([^\"]*\")|'[^']*'|([^'\">]+(?=>|\s+\w+=)))

regex demo

但是,这不适用于 nofollow.

等属性