Сопоставить строку с кавычками с регулярным выражением, но с исключениями

Здравствуйте, я пытаюсь проверить, нет ли строки в кавычках :T или же :U в конце. (Я использую.Net Regex Class)

Что у меня есть

([\"'])(?:\\\1|.)*?\1

Это соответствует всем двойным и одиночным кавычкам, например "Test" а также 'Test'Где я застрял, я не хочу, чтобы регулярное выражение соответствовало "Test":U или же 'Test':U или же "Test":T или же 'Test':T

2 ответа

Решение

Вы можете использовать следующее отрицательное утверждение и якоря:

([\"'])(?:\\\1|.)*?\1(?!:[TU])
                      ^^^^^^^^

Посмотреть демо RegEX

Вам нужно добавить отрицательный прогноз в конце (?!:[UT]), Кроме того, вы можете получить более эффективный шаблон, подобный этому:

string pattern = @"[""'](?>(?<="")[^""\\]*(?>\\.[^""\\]*)*""|(?<=')[^'\\]*(?>\\.[^'\\]*)*')(?!:[UT])";
Другие вопросы по тегам