Регулярное выражение: сопоставить несколько строк с одним выражением регулярного выражения - PullRequest
0 голосов
/ 24 января 2020

Я пытаюсь извлечь строку на основе ниже двух строк. Я должен быть в состоянии соответствовать одному из доступного текста. Входные строки:

  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 (из 1-й строки), либо Microsoft.DBforPostgreSQL/servers (из 2-й строки).

Входные строки не в порядке ввода.

Редактировать : Входная строка также может иметь вид:

  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 / database "

Я пробовал это: (Microsoft.[a-zA-Z]+\/[a-zA-Z]+)|(Microsoft.[a-zA-Z]+\/[a-zA-Z]+\/[a-zA-Z]+\/[a-zA-Z]+) и это не сработало

Ответы [ 2 ]

0 голосов
/ 24 января 2020

это регулярное выражение, которое вы хотите:

(Microsoft\.DBforPostgreSQL/.*)/.*\?.*
0 голосов
/ 24 января 2020

Вы можете попробовать это регулярное выражение

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...