Мне нужно проанализировать строку и добавить одинарные кавычки вокруг каждого значения Guid. Я думал, что могу использовать Regex для этого, но я не совсем гуру Regex.
Есть ли хорошее регулярное выражение для идентификации Guid?
Мой второй вопрос: как только я нашел допустимое регулярное выражение, я предполагаю, что буду использовать, Regex.Replace(String, String, MatchEvaluator)
но я не совсем уверен в синтаксисе. Может что-то вроде:
return Regex.Replace(stringToFindMatch, GuidRegex, match =>
{
return string.Format("'{0}'", match.Groups[0].ToString());
});
Строка, которую я пытаюсь разобрать, может выглядеть так:
"ВЫБЕРИТЕ passwordco0_.PASSWORD_CONFIG_ID как PASSWORD1_46_0_, FROM PASSWORD_CONFIG passwordco0_ WHERE passwordco0_.PASSWORD_CONFIG_ID = baf04077-a3c0-454b-ac6f-9fec00b0e170af;
Ответы:
Это довольно просто и, как вы говорите, не требует делегата.
Это соответствует следующим стилям, которые являются эквивалентными и приемлемыми форматами для GUID.
Обновление 1
@NonStatic указывает в комментариях, что указанное выше регулярное выражение будет соответствовать ложным срабатываниям, которые имеют неправильный закрывающий разделитель.
Этого можно избежать с помощью условных выражений регулярных выражений, которые широко поддерживаются.
Условные выражения поддерживаются механизмом JGsoft, Perl, PCRE, Python и платформой .NET. Ruby поддерживает их, начиная с версии 2.0. Такие языки, как Delphi, PHP и R, которые имеют функции регулярных выражений на основе PCRE, также поддерживают условные выражения. (источник http://www.regular-expressions.info/conditional.html )
Следующее за ним регулярное выражение будет соответствовать
И не будет соответствовать
Regex:
Решения упрощены, чтобы сопоставить только числа, чтобы более четко показать, что требуется в случае необходимости.
источник
[0-9a-fA-F\-]{32,36}
.https://support.office.com/en-us/article/poisson-function-d81f7294-9d7c-4f75-bc23-80aa8624173a
Основное регулярное выражение следующее:
или вы можете вставить его сюда .
Надеюсь, это сэкономит вам время.
источник
[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}
Прочерки может быть дополнительно:[0-9A-Fa-f]{8}-?([0-9A-Fa-f]{4}-?){3}[0-9A-Fa-f]{12}
.Чтобы C # .Net мог найти и заменить любую строку, ищущую guid из заданного текста,
Используйте этот RegEx:
Пример кода C #:
Конечно работает! И он соответствует и заменяет следующие стили, которые являются эквивалентными и приемлемыми форматами для GUID.
источник
В .NET Framework 4 есть усовершенствованная структура System.Guid, которая включает новые методы TryParse и TryParseExact для анализа GUID. Вот пример для этого.
В этом примере мы создаем новый объект guid, а также берем одну строковую переменную с недопустимым guid. После этого мы используем метод TryParse, чтобы проверить, имеют ли обе переменные допустимый формат guid или нет. Запустив пример, вы увидите, что строковая переменная имеет недопустимый формат guid и выдает сообщение «InValid guid». Если строковая переменная имеет допустимый guid, то в методе TryParse будет возвращено значение true.
источник
Вы можете легко автоматически сгенерировать код C #, используя: http://regexhero.net/tester/ .
Это бесплатно.
Вот как я это сделал:
Затем веб-сайт автоматически генерирует код .NET:
источник
Я использую более простой шаблон регулярного выражения
источник