2016-05-23 3 views
0

Я пытаюсь декодировать следующее выражение регулярного выражения. По какой-то причине он не работает на моем онлайн-декодере. Может ли кто-нибудь помочь мне дешифровать следующее:выражение выражения регулярного выражения

Regex r = new Regex("src=\"(?<src>[^\"]+)\"") 

Спасибо.

+0

Почему вы так говорите? @ h2000000 дал ответ ниже –

+0

редактирование не было перезагружено .. очень плохо – rock321987

ответ

4

кажется, что вы пропустили последний символ кавычки, но давайте игнорировать это.

Вскрытие:

src=\"(?<src>[^\"]+)\" 
  • src= - Символьная строка src=
  • \" - Буквальное цитата (убежали, чтобы убедиться, строка не завершается)
  • (?<src>[^\"]+)
    • отлов группа под названием src (?<src>) соответствия:
    • [^\"]+ - Любой символ, который не " характер, соответствует 1 до бесконечности (раз +)
  • \" - Литералом цитата (экранированная, чтобы убедиться, что строка не заканчивается)

Debuggex:

Regular expression visualization

В человеческих словах:

С строки <img src="picture.png" /> это создаст именованный захватив группу под названием src, содержащий picture.png.

Regex ограничения:

Если изображение создается с помощью одинарные кавычки (<img src='picture.png' />) это не будет работать правильно. В этом случае вы можете использовать что-то вроде:

src=(\"(?<src1>[^\"]+)\"|\'(?<src2>[^\']+)\') 
         ^
    DOUBLE QUOTES  OR  SINGLE QUOTES 

, который будет соответствовать и (в любом src1 или src2 в зависимости от типа котировального).

Regular expression visualization

+0

спасибо. добавил отсутствующий « –

+0

Если вы проигнорируете регулярное выражение в виде строки, почему вы избегаете двойного qutation? Это не то, что передается движку regex .. – sln

0

Возможно, из-за того, что ваш шаблон был неправильным для начала? Я думаю, что это то, что вы хотите:

Regex r = new Regex("src=\"([^\"]+)\"") 

Это захватит image.jpeg в src="image.jpeg".

Regex 101

+0

вы, вероятно, также хотите проверить одиночные кавычки здесь –

Смежные вопросы