我正在使用这个正则表达式
private static final String HREF_PATTERN =
"\\s*(?i)href\\s*=\\s*(\"([^\"]*\")|'[^']*'|([^'\">\\s]+))";
获取链接
<a href=www.example.com/1234 5678>
URL 格式错误。它包含一个空格。问题是我想获取包括“5678”在内的整个链接,但我只得到“www.example.com/1234”。
我不太擅长正则表达式。有人可以提供一个有效的正则表达式,以便我可以获得整个网址“www.example.com/1234 5678”。
谢谢
最佳答案
The external program creates an html Email with several
<a href=www.example.com/1234 5678>
tags.
假设您无法在源代码级别修复它,您可以尝试使用正则表达式修复它。
如果href
attribute 是唯一的属性,您不必关心 =
之后的空格。 。删除\\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
等属性。 .
关于java - 正则表达式用于修复带有空格的断开链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33259650/