【发布时间】:2015-10-21 21:25:50
【问题描述】:
我正在使用这个正则表达式
private static final String HREF_PATTERN =
"\\s*(?i)href\\s*=\\s*(\"([^\"]*\")|'[^']*'|([^'\">\\s]+))";
从
获取链接 <a href=www.example.com/1234 5678>
网址格式错误。它包含一个空格。问题是我想获得包括“5678”在内的整个链接,但我只获得“www.example.com/1234”。
我不太擅长正则表达式。有人可以提供一个有效的正则表达式,以便我可以获得整个网址“www.example.com/1234 5678”。
谢谢
【问题讨论】:
-
为什么 URL 会包含空格?通常将空格转换为
%20 -
URL 是从另一个我无法编辑的程序创建的
-
然后用 %20 替换 withespaces 并为有效的 url 保留正则表达式
-
你不能在引号内提供网址并从里面获取吗?
-
试试
"\\s*(?i)href\\s*=\\s*(\"([^\"]*\")|'[^']*'|([^'\">]+))"。除非您的<a>标记包含其他属性,否则这将捕获整个 href 值。或者,您可以在下一个属性名称之前使用前瞻停止:(?i)\\s*href\\s*=\\s*(\"([^\"]*\")|'[^']*'|([^'\">]+(?=\\s+\\w+=|>)))