我正在尝试根据以下两个字符串提取字符串。我应该能够匹配可用文本之一。输入字符串为:
//management.azure.com/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.DBforPostgreSQL/servers/serverName/databases/databaseName?api-version=2017-12-01
//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
(从第二字符串)。
输入字符串未按输入顺序。
编辑:输入字符串也可以像:
//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]+)
,但是没有用
您可以尝试此正则表达式
Microsoft\.DBforPostgreSQL\/servers(?:/serverName/databases)?
这是您想要的正则表达式:
(Microsoft\.DBforPostgreSQL/.*)/.*\?.*