我正在尝试编写正则表达式来提取URL,其端点具有以下格式:
https://api.siteurl.com/id/a1b2c3d4/apps
https://api.siteurl.com/id/a1b2c3d4/devices
...
etc
这些网址中的ID为a1b2c3d4
,网址之间可能有所不同,但我想提取其周围的文字:
以下正则表达式匹配整个字符串:
https:\/\/\S+\.\S+\.com\/id\/\S+\/\S+
但是,我不想提取id本身,只想将它用作前瞻。
最终提取的字符串应该与https://api.siteurl.com/id'...'apps'
实际上未提取...
的地方。
是否只能使用2个正则表达式执行此操作,其中每个正则表达式使用前瞻和后视,或者是否可以使用单个表达式仅提取网址的相关部分?
答案 0 :(得分:1)
您可以使用2个捕获组来捕获要保留的数据,并匹配您不想保留的数据。
(https:\/\/\S+\.\S+\.com\/id)\/[^\/]+\/(\S+)
(
捕获第1组
https:\/\/\S+\.\S+\.com\/id
匹配字符串的开头,直到id
不包含/
)
关闭群组\/
匹配以下/
[^\/]+\/
匹配+1次除/
以外的任何字符,然后匹配/
(\S+)
捕获第2组匹配1次以上非空格字符这是注释中没有非捕获组(?:
的模式,因为这是不必要的。