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);