regex 正则表达式,用于查找2个字符串之间的子字符串,不包括特定字符串

70gysomp  于 2022-11-18  发布在  其他
关注(0)|答案(2)|浏览(121)

我已经检查了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&amp;parent=/sites/WG-ProductManagementTeam/FunctionalSpecs/DevDOC/Enhancements to PA Peer Checklist&amp;p=true&amp;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来做这件事。
任何帮助都是非常感谢的。谢谢。

hgb9j2n6

hgb9j2n61#

您可以解码然后用途:

`/DevDOC/[^\.]+\.pdf`

或者在不解码的情况下,您可能希望用途:

DevDoc[^\.]+pdf

这里我依赖于在.pdf之前存在一个句点,因为正则表达式应该一直运行到第一次出现句点为止。如果这不起作用,你可能想使用[^"]+

jrcvhitl

jrcvhitl2#

您可以使用decodeURIComponent对您url进行解码,然后提取您的值,如下所示。

var url = decodeURIComponent("your encoded url string");
console.log(url.match(/DevDOC[\s\S]*\.pdf/i));

相关问题