C # Regex for Guid

Мне нужно проанализировать строку и добавить одинарные кавычки вокруг каждого значения Guid. Я думал, что могу использовать Regex для этого, но я не совсем гуру-регге.

Есть ли подходящее Regex для определения Guid?

Мой второй вопрос – когда я нашел правильное регулярное выражение, я предполагаю, что я буду использовать Regex.Replace(String, String, MatchEvaluator) но я не совсем уверен в синтаксисе. Может быть, что-то вроде:

 return Regex.Replace(stringToFindMatch, GuidRegex, match => { return string.Format("'{0}'", match.Groups[0].ToString()); }); 

Строка, которую я пытаюсь разобрать, может выглядеть так:

“SELECT passwordco0_.PASSWORD_CONFIG_ID как PASSWORD1_46_0_, FROM PASSWORD_CONFIG passwordco0_ WHERE passwordco0_.PASSWORD_CONFIG_ID = baf04077-a3c0-454b-ac6f-9fec00b8e170; @ p0 = baf04077-a3c0-454b-ac6f-9fec00b8e170 [Тип: Guid (0)]”

Это довольно просто и не требует делегата, как вы говорите.

 resultString = Regex.Replace(subjectString, @"^[{(]?[0-9A-F]{8}[-]?([0-9A-F]{4}[-]?){3}[0-9A-F]{12}[)}]?$", "'$0'", RegexOptions.IgnoreCase); 

Это соответствует следующим стилям, которые являются эквивалентными и приемлемыми форматами для GUID.

 "ca761232ed4211cebacd00aa0057b223" "CA761232-ED42-11CE-BACD-00AA0057B223" "{CA761232-ED42-11CE-BACD-00AA0057B223}" "(CA761232-ED42-11CE-BACD-00AA0057B223)" 

Обновление 1

@NonStatic указывает на то, что указанное выше регулярное выражение будет соответствовать ложным срабатываниям, которые имеют неправильный ограничитель закрытия.

Этого можно избежать с помощью регулярных выражений, которые широко поддерживаются.

Условные версии поддерживаются механизмом JGsoft, Perl, PCRE, Python и .NET framework. Ruby поддерживает их начиная с версии 2.0. Языки, такие как Delphi, PHP и R, которые имеют регулярные выражения на основе PCRE, также поддерживают условные обозначения. (источник http://www.regular-expressions.info/conditional.html )

Следующее регулярное выражение будет соответствовать

 {123} (123) 123 

И не будет соответствовать

 {123) (123} {123 (123 123} 123) 

Regex:

 ^({)?(\()?\d+(?(1)})(?(2)\))$ 

Решения упрощаются, чтобы соответствовать только номерам, чтобы более четко показать, что требуется, если это необходимо.

Большинство основных регулярных выражений:

 (^([0-9A-Fa-f]{8}[-][0-9A-Fa-f]{4}[-][0-9A-Fa-f]{4}[-][0-9A-Fa-f]{4}[-][0-9A-Fa-f]{12})$) 

или вы можете вставить его здесь .

Надеюсь, это сэкономит вам время.

Вы можете легко сгенерировать код C # с помощью: http://regexhero.net/tester/ .

Это бесплатно.

Вот как я это сделал:

введите описание изображения здесь

Затем веб-сайт автоматически генерирует код .NET:

 string strRegex = @"\b[A-F0-9]{8}(?:-[A-F0-9]{4}){3}-[A-F0-9]{12}\b"; Regex myRegex = new Regex(strRegex, RegexOptions.None); string strTargetString = @" {CD73FAD2-E226-4715-B6FA-14EDF0764162}.Debug|x64.ActiveCfg = Debug|x64"; string strReplace = @"""$0"""; return myRegex.Replace(strTargetString, strReplace); 

В .NET Framework 4 улучшена структура System.Guid, которая включает в себя новые методы TryParse и TryParseExact для анализа GUID. Вот пример этого.

  //Generate New GUID Guid objGuid = Guid.NewGuid(); //Take invalid guid format string strGUID = "aaa-aaaa"; Guid newGuid; if (Guid.TryParse(objGuid.ToString(), out newGuid) == true) { Response.Write(string.Format("
{0} is Valid GUID.", objGuid.ToString())); } else { Response.Write(string.Format("
{0} is InValid GUID.", objGuid.ToString())); } Guid newTmpGuid; if (Guid.TryParse(strGUID, out newTmpGuid) == true) { Response.Write(string.Format("
{0} is Valid GUID.", strGUID)); } else { Response.Write(string.Format("
{0} is InValid GUID.", strGUID)); }

В этом примере мы создаем новый объект guid, а также принимаем одну строковую переменную с недопустимым указателем. После этого мы используем метод TryParse для проверки того, что обе переменные имеют действующий формат guid или нет. При запуске примера вы можете видеть, что строковая переменная имеет неверный формат guid, и она дает сообщение «InValid guid». Если строковая переменная имеет действительный guid, то это вернет true в методе TryParse.

Для C # .Net, чтобы найти и заменить любую строку, ориентированную на руководство, из данного текста,

Используйте этот RegEx:

 [({]?[a-zA-Z0-9]{8}[-]?([a-zA-Z0-9]{4}[-]?){3}[a-zA-Z0-9]{12}[})]? 

Пример кода C #:

 var result = Regex.Replace( source, @"[({]?[a-zA-Z0-9]{8}[-]?([a-zA-Z0-9]{4}[-]?){3}[a-zA-Z0-9]{12}[})]?", @"${ __UUID}", RegexOptions.IgnoreCase ); 

Конечно, работает! И он соответствует и заменяет следующие стили, которые являются эквивалентными и приемлемыми форматами для GUID.

 "aa761232bd4211cfaacd00aa0057b243" "AA761232-BD42-11CF-AACD-00AA0057B243" "{AA761232-BD42-11CF-AACD-00AA0057B243}" "(AA761232-BD42-11CF-AACD-00AA0057B243)" 
  • Разбор CN из сертификата DN
  • Что такое регулярное выражение для извлечения всех emojis из строки?
  • Новые строки в sed на Mac OS X
  • bash regex с кавычками?
  • Regex вернуть имя файла, удалить путь и расширение файла
  • Переименовать ': 2f' to '-' в имена папок в Linux
  • Проверка адресов IPv4 с регулярным выражением
  • Как удалить все неабелевые числовые символы из строки в MySQL?
  • Получение текста после соответствия регулярному выражению
  • Удалите часть строки после "."
  • C # regex для получения идентификатора видео с youtube и vimeo по URL-адресу
  • Interesting Posts

    Как навсегда заблокировать KB4012218, KB4012219 и выпустить обновления?

    WPF: Как я прокручиваю все элементы управления в окне?

    Все папки на всех дисках настроены на чтение только в Windows XP и не могут быть изменены

    Поворотные и интервальные метки на оси ggplot2

    Динамически добавлять TableRow в TableLayout

    Получение местоположения элемента управления, относящегося ко всему экрану?

    Разница между TPL и async / await (Обработка streamов)

    C # с помощью функции Sendkey для отправки ключа в другое приложение

    Как совместить прослушиватели событий с запросом на событие?

    C # + DirectShow.NET = простой доступ к WebCam?

    Инструмент, который полностью блокирует доступ в Интернет для Windows?

    Как избежать обратных косых черт и автоматически создаваемого escape-символа в пути к файлу в java

    Как включить другой XHTML в XHTML с помощью JSF 2.0 Facelets?

    Соляризованный цвет фона в emacs под tmux

    Могу ли я получить проверку орфографии в MS Word, чтобы помнить мои грамматические решения?

    Давайте будем гением компьютера.