Regex - одинарные кавычки ИЛИ двойные кавычки -C#

Как это изменить:

Regex.Match(value, @"href=\""(.*?)\""",RegexOptions.Singleline);

Так что он выберет href='foobar' (одинарные кавычки), а также выбрав href="foobar" (двойные кавычки ")??

1 ответ

Решение

Вы можете использовать шаблон как это:

href=(["'])(.*?)\1

Это будет соответствовать любой строке, содержащей href= с последующим " или же ' за которым следует любое количество символов (без жадности), за которым следует тот же символ, который был ранее найден в группе 1. Обратите внимание, что \1 это обратная ссылка.

Также обратите внимание, что это также будет означать, что содержимое вашего атрибута будет записано в группе 2, а не в группе 1.

Теперь правильный способ экранирования этого строкового литерала был бы следующим: (используя обычные строки):

Regex.Match(value, "href=([\"'])(.*?)\\1", RegexOptions.Singleline);

Или вот так (используя дословные строки):

Regex.Match(value, @"href=([""'])(.*?)\1", RegexOptions.Singleline);
Другие вопросы по тегам