我正在尝试编写一个正则表达式来提取URL,这些URL具有以下格式的端点:
https://api.siteurl.com/id/a1b2c3d4/apps
https://api.siteurl.com/id/a1b2c3d4/devices
...
etc
这些URL中的id是a1b2c3d4,并且可以在不同的URL之间有所不同,但我想提取它周围的文本:
下面的正则表达式匹配整个字符串:
https:\/\/\S+\.\S+\.com\/id\/\S+\/\S+
但是,我不想提取id本身,而只是想将其用作先行检查。
最终提取的字符串应该类似于https://api.siteurl.com/id'...'apps'
其中...实际上并未被提取。
是否只能使用2个正则表达式来实现这一点,其中每个正则表达式都使用前视和后视,或者是否可以使用单个表达式来仅提取url的相关部分?
发布于 2020-01-23 22:37:35
您可以使用2个捕获组来捕获您想要保留的数据,并匹配您不想保留的数据。
(https:\/\/\S+\.\S+\.com\/id)\/[^\/]+\/(\S+)不带/的
( Capture https:\/\/\S+\.\S+\.com\/id Group1 id匹配字符串的开头
) Close group\/ match ) / following[^\/]+\/ Match +1次除空格之外的任何字符,然后Match /(\S+) Capture / 2 Match 1+ a non /
(\S+)/ char这是注释中的模式,不带非捕获组(?:,因为它是不必要的。
https://stackoverflow.com/questions/46833007
复制相似问题