Regex:使用单个正则表达式匹配多个字符串[关闭]

问题描述 投票:-2回答:2

我正在尝试根据以下两个字符串提取字符串。我应该能够匹配可用文本之一。输入字符串为:

  1. //management.azure.com/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.DBforPostgreSQL/servers/serverName/databases/databaseName?api-version=2017-12-01
  2. //management.azure.com/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.DBforPostgreSQL/servers/serverName?api-version=2017-12-01

基于任何可用的字符串(来自2的字符串),我应该能够提取Microsoft.DBforPostgreSQL/servers/serverName/databases(从第一字符串)或Microsoft.DBforPostgreSQL/servers(从第二字符串)。

输入字符串未按输入顺序。

编辑:输入字符串也可以像:

  1. //management.azure.com/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.DocumentDB/databaseAccounts/accountName/apis/sql/databases/databaseName?api-version=2015-04-08

在上面的示例字符串中,我需要提取“ Microsoft.DocumentDB / databaseAccounts / accountName / apis / sql / databases”

我已经尝试过:(Microsoft.[a-zA-Z]+\/[a-zA-Z]+)|(Microsoft.[a-zA-Z]+\/[a-zA-Z]+\/[a-zA-Z]+\/[a-zA-Z]+),但是没有用

python regex
2个回答
0
投票

您可以尝试此正则表达式

Microsoft\.DBforPostgreSQL\/servers(?:/serverName/databases)?

https://regex101.com/r/z0hGRa/1


0
投票

这是您想要的正则表达式:

(Microsoft\.DBforPostgreSQL/.*)/.*\?.*
© www.soinside.com 2019 - 2024. All rights reserved.