Intereting Posts
Ошибка Regfree COM-события из другой нити Используйте NUnit Console Runner для запуска всех тестов в папке Не можете использовать «this» в инициализаторе члена? Как создать и получить доступ к новому экземпляру анонимного classа, переданного как параметр в C #? Как передать List в список Разделите IEnumerable на куски фиксированного размера (верните IEnumerable <IEnumerable >, где внутренние последовательности имеют фиксированную длину) Обертка ManualResetEvent как ожидаемая задача Как имитировать выключение Windows для отладки? ожидание Task.Factory.StartNew (() => против Task.Start; ожидание задачи; Как лучше понять код / ​​заявления из статьи «Async – Handling multiple Exceptions»? Как указать тип classа wcf behaviorExtension без номера версии сборки? Размер сетки в коде позади Данный ключ отсутствовал в словаре. Какой ключ? «Коллекция элементов не может быть изменена, когда установлено свойство DataSource.» Будет ли GetType () возвращать наиболее производный тип при вызове из базового classа?

Что является лучшим генератором регулярных выражений / объяснением

Я новичок в программировании, и я использую C # 2010. Есть несколько довольно длинных (50 строк) регулярных выражений в коде, который мне нужно поддерживать. Также мне нужно разобрать некоторые текстовые файлы с большим количеством информации. Можете ли вы порекомендовать инструмент для выполнения этих задач?

Два инструмента:

regexbuddy -> http://www.regexbuddy.com/

и express -> http://www.ultrapico.com/Expresso.htm

Сначала это не бесплатно, а второе. Оба имеют схожие характеристики. Я лично использую первый, не знаю, почему: D

Установите флажок «Объяснить» перед тем, как нажать «Отправить» на странице http://myregextester.com, и вы получите отличный результат от YAPE :: Regex :: Объясните

The regular expression: (?-imsx:[foo]bar(baz)) matches as follows: NODE EXPLANATION ---------------------------------------------------------------------- (?-imsx: group, but do not capture (case-sensitive) (with ^ and $ matching normally) (with . not matching \n) (matching whitespace and # normally): ---------------------------------------------------------------------- [foo] any character of: 'f', 'o', 'o' ---------------------------------------------------------------------- bar 'bar' ---------------------------------------------------------------------- ( group and capture to \1: ---------------------------------------------------------------------- baz 'baz' ---------------------------------------------------------------------- ) end of \1 ---------------------------------------------------------------------- ) end of grouping ---------------------------------------------------------------------- 

Еще один онлайн-инструмент: http://gskinner.com/RegExr/

@ Линкольн, я сочувствую вашей проблеме. К сожалению, регулярные выражения имеют очень мало возможностей для внутренней документации, поэтому 50-строчная по существу похожа на двоичную программу. Имейте в виду, что если вы меняете 1 символ, все это сломается. Вот, например, регулярное выражение для даты:

^(19|20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])$

Проанализируйте это регулярное выражение с помощью параметра RegexBuddy, совпадающего с датой в формате yyyy-mm-dd между 1900-01-01 и 2099-12-31 , с выбором из четырех разделителей. Якорями убедитесь, что вся переменная является датой, а не частью текста, содержащей дату. Год соответствует (19|20)\d\d . Я использовал чередование, чтобы первые две цифры были равны 19 или 20 .

Если вы не знали, что это была дата, тогда для анализа того, что он делает, потребуется детективный или криптоаналитический подход. Regex приятель и так поможет немного, но не дают семантики.

Я предполагаю, что ваше 50-строчное регулярное выражение (я содрогаюсь, когда пишу эти слова) будет иметь даты, идентификаторы и адреса компаний, а доброта знает, что в нем встроено.

Единственная приятная новость заключается в том, что регулярные выражения в меньшей степени зависят от языка, чем раньше. Поэтому, если он был первоначально написан на Java, он, вероятно, работает на C # и наоборот.

Он просто используется для идентификации полей или есть группы захвата? Это сбалансированные скобки, которые извлекают подполя в программу через API. Изучив, что содержат эти поля, вы можете использовать полезный указатель на то, что делает регулярное выражение.

Прагматично, если он не находится на критическом пути, постарайтесь прикоснуться к нему как можно меньше!

Просто нашел действительно крутой инструмент объяснения регулярных выражений:

 http://www.regexper.com/ 

« За кулисами RegExper – это приложение Ruby, которое преобразует регулярные выражения в SVG-изображение. SVG встроен в страницу, но его можно извлечь или скопировать для использования в вашей собственной документации ».

Для получения дополнительной информации прочитайте это сообщение в блоге:

 http://www.sitepoint.com/regexper-regular-expressions-explained/