извлечение двух разных подстрок внутри строки - PullRequest
1 голос
/ 28 июня 2019

Используя регулярное выражение, как извлечь несколько подстрок внутри строки?

Предположим, у нас есть это:

resgrp / provider / Microsoft.Storage /storageAccounts / vvvvvdgdevstor " "субъект": "/ blobServices / по умолчанию / контейнеры / coloradohhhhready / блобовым / README _.._ HL7", "типСобытия.": "Microsoft.Storage.BlobCreated", "eventTime":" 2019-06-19T17: 28: 40.3136657Z "," id ":" 604ad6c5a0145-04c4-26bsssss26a "," data ": {" api ":" PutBlockList "," clientRequestId ":" aaaaaaae-4e68-95f6-c1ssb02f "

1009 *

Результат, который я хотел бы получить:

/coloradohhhhready/README_.._.hl7

То, что я пробовал:

(?i)(?<=\/containers\/)(.*)(?=\/blobs\/)(.*)(?<=\/blobs\/)(.*)(?=","eventtype)

Который дал:

coloradohhhhready / blobs / README _.._. hl7

Я бы просто хотел удалить сегмент /blobs/ внутри этой строки:

enter image description here

Ответы [ 3 ]

2 голосов
/ 28 июня 2019

Если вы хотите сопоставить его с помощью регулярного выражения, вы можете использовать 2 группы захвата и сопоставлять вместо использования обходных путей, которые предшествуют, после и /blobs в середине.

В группе захвата (/[^/]+) соответствует прямой слеш с последующим соответствием, а не /

Ваши значения находятся в группе захвата 1 и группе 2.

(?i)(?:/containers)(/[^/]+)/blobs(/[^"/]+)(?:","eventtype")

Regex demo | .NET C # пример

2 голосов
/ 28 июня 2019

Если вы знаете, что вы всегда захотите удалить /blobs/, просто замените все это после на /.

С другой стороны, вставка вашего решения на Regex101 показала, что совпадение вашего выражения дает 3 группы, одна из которых /blobs/. Таким образом, в вашем случае это было бы так же просто, как восстановить другую строку, выполнив: "/" + Group[1].Value + "/" + Group[3].Value.

0 голосов
/ 28 июня 2019

Я предполагаю, что это выражение,

(?:\/blobs\/)|(.*?)

, возможно, будет вариантом для запуска.

Демо

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