我已经检查了Stackoverflow上所有现有的问题,但我找不到完美的答案,需要你的帮助.
因此,基本上我有多个字符串包含不同格式的URL以不同的方式,例如:-
一句话:<p><a href='https://abcd.com/sites/WG-ProductManagementTeam/FunctionalSpecs/Forms/AllItems.aspx?id=/sites/WG-ProductManagementTeam/FunctionalSpecs/DevDOC/Enhancements to PA Peer Checklist/PA Peer Checklist (V2.3) -v10.0.pdf&parent=/sites/WG-ProductManagementTeam/FunctionalSpecs/DevDOC/Enhancements to PA Peer Checklist&p=true&ga=1'>WG-Product Management Team - PA Peer Checklist (V2.3) -v10.0.pdf - All Documents (sharepoint.com)</a></p>
二:https://abcd.com/sites/WG-ProductManagementTeam/FunctionalSpecs/Forms/AllItems.aspx?id=%2Fsites%2FWG%2DProductManagementTeam%2FFunctionalSpecs%2FDevDOC%2FEnhancements%20to%20PA%20Peer%20Checklist%2FPA%20Peer%20Checklist%20%28V2%2E3%29%20%2Dv10%2E0%2Epdf&parent=%2Fsites%2FWG%2DProductManagementTeam%2FFunctionalSpecs%2FDevDOC%2FEnhancements%20to%20PA%20Peer%20Checklist&p=true&ga=1
第三章:https://abcd.com/:b:/r/sites/WG-ProductManagementTeam/FunctionalSpecs/DevDOC/Enhancements%20to%20PA%20Peer%20Checklist/PA%20Peer%20Checklist%20(v2.0)%20-%20v3.0.pdf?csf=1&web=1&e=txs2Yq
我想提取URL的一部分,如下所示:- /DevDOC/....../.pdf
正如你可以看到上面共享的3个URL字符串都是不同的,但我无法找到最有效的方法来解决这个问题。
我需要这样做的方式,它的工作,为每一种类型的URL字符串,即使格式是不同的,它应该提取它从任何和每一个字符串以同样的方式。
现在我使用正则表达式:“./FunctionalSpecs(?!.\1)(.*?)(.pdf)”,并且它对上面共享的URL 2和3起作用,但在URL 1的情况下,它返回:
/DevDOC/PA同行检查表增强&p=true&ga= 1 '〉WG-产品管理团队- PA同行检查表(V2.3)-v10.0.pdf
这是不正确的,我想要的是:
/DevDOC/PA同行检查表增强/PA同行检查表(V2.3)-v10.0.pdf
请尽快帮我解决这个问题,因为它看起来很容易,但我无法以有效的方式来做。
而且,我正在尝试用Java来做这件事。
任何帮助都是非常感谢的。谢谢。
2条答案
按热度按时间hgb9j2n61#
您可以解码然后用途:
或者在不解码的情况下,您可能希望用途:
这里我依赖于在
.pdf
之前存在一个句点,因为正则表达式应该一直运行到第一次出现句点为止。如果这不起作用,你可能想使用[^"]+
。jrcvhitl2#
您可以使用decodeURIComponent对您url进行解码,然后提取您的值,如下所示。