Каков самый легкий путь в C#, чтобы проверить, если регулярное выражение хорошо формируется?

Есть ли какой-либо простой путь в C#, чтобы протестировать, если регулярное выражение является регулярным выражением? Другими словами, я хотел бы проверить, уродлив ли обеспеченный пользователями regex шаблон или нет. Это - просто тест синтаксиса и не, чего regex, как предполагается, достигает/тестирует.Спасибо

8
задан Zoman 6 February 2010 в 22:02
поделиться

3 ответа

Для окна необходимо создать новый объект NameScope:

NameScope.SetNameScope(this, new NameScope());

Затем имя метки регистрируется в окне:

RegisterName(statusDisplay.Name, statusDisplay);

Поэтому это все, что нужно сделать, чтобы FindName () сработал.

-121--4859609-

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

Деревья решений: наиболее заметен алгоритм C4.5. Они имеют преимущество в создании легко интерпретируемой модели. Однако они подвержены переоборудованию. Существует множество вариантов.

Байесовские сети имеют сильные статистические корни. Они особенно полезны в областях, где вывод выполняется по неполным данным.

Искусственные нейронные сети широко используются и мощная техника. Теоретически они способны аппроксимировать любую произвольную функцию. Однако они требуют настройки большого количества параметров (структура сети, количество узлов, функции активации,..). Кроме того, они имеют недостаток работы в качестве черного ящика (трудно интерпретировать модель)

. Используя знаменитый трюк ядра, в теории всегда можно достичь 100% разделяемости. В отличие от ANN, они стремятся оптимизировать уникально решаемую задачу (без локальных минимумов). Однако они могут быть ресурсоемкими и трудными для применения в больших наборах данных. SVM определенно являются открытой областью исследований.

Затем существует класс алгоритмов мета-обучения, таких как ансамблевые методы обучения, такие как фасовка в мешки, повышение, укладка и т.д. Они сами по себе не являются полными, а скорее используются в качестве способов улучшения и объединения других алгоритмов.

Я должен упомянуть в конце, что ни один алгоритм не лучше, чем другой в целом, и что решение которого выбрать сильно зависит от области, в которой мы находимся, и данных и как он предварительно обрабатывается среди многих других факторов..

-121--4690786-

Можно попробовать передать его конструктору Regex и перехватить потенциал ArgumentException , который выдается, если аргумент является неправильным регулярным выражением.

6
ответ дан 5 December 2019 в 18:59
поделиться

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

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

1
ответ дан 5 December 2019 в 18:59
поделиться

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

Деревья решений: наиболее заметен алгоритм C4.5. Они имеют преимущество в создании легко интерпретируемой модели. Однако они подвержены переоборудованию. Существует множество вариантов.

Байесовские сети имеют сильные статистические корни. Они особенно полезны в областях, где вывод выполняется по неполным данным.

Искусственные нейронные сети широко используются и мощная техника. Теоретически они способны аппроксимировать любую произвольную функцию. Однако они требуют настройки большого количества параметров (структура сети, количество узлов, функции активации,..). Кроме того, они имеют недостаток работы в качестве черного ящика (трудно интерпретировать модель)

Поддерживающая векторная машина, возможно, считается одним из самых мощных методов. Используя знаменитый трюк ядра, в теории всегда можно достичь 100% разделяемости. В отличие от ANN, они стремятся оптимизировать уникально решаемую задачу (без локальных минимумов). Однако они могут быть ресурсоемкими и трудными для применения в больших наборах данных. SVM определенно являются открытой областью исследований.

Затем существует класс алгоритмов мета-обучения, таких как ансамблевые методы обучения, такие как фасовка в мешки, повышение, укладка и т.д. Они сами по себе не являются полными, а скорее используются в качестве способов улучшения и объединения других алгоритмов.

Я должен упомянуть в конце, что ни один алгоритм не лучше, чем другой в целом, и что решение которого выбрать сильно зависит от области, в которой мы находимся, и данных и того, как он предварительно обрабатывается среди многих других факторов.

-121--4690786-

Инструменты для разработки Chrome великолепны, но, поскольку Chrome не является браузером, вам никогда не придется беспокоиться о производительности JS, и это многое оптимизирует, это не очень помогает в поиске узких мест других браузеров. IE 8 имеет инструменты для разработки , которые позволяют профилировать, поэтому вы можете найти это полезным, помимо обычного профилировщика Firebug.

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

Кроме того, если вы обеспокоены, в частности, функцией jQuery.live, позвольте мне быстро объяснить, как она работает: Допустим, вы делаете $ ('# links Wrap a') .live ('click', fn);

  • Это создает один и только один обработчик событий и присоединяет его к # linkswrap .
  • При щелчке по одной из ссылок событие click всплывает вверх по дереву DOM, в итоге достигая # linkswrap .
  • jQuery.live обнаруживает, из какой ссылки он на самом деле пришел. Эта информация находится в объекте Event браузера.
  • jЗапрос.live применяет fn в контексте ссылки, которая была нажата

. Браузер присоединяет только одно событие, поэтому использование памяти невелико, и ему также не нужно постоянно проверять новые элементы, он использует событие пузыря в прохладном пути.

На самом деле можно утверждать, что если вы прикрепляете тысячи событий к странице, метод .live может быть более эффективным, если вы используете хорошие селекторы. (например, .something .foo .bar.baz требует большого количества проходов и пузырьков, но # parentOfTheLinks a.links будет быстро)

-121--2356652-

Вот пример из C # Online .NET , в котором используются исключения:

EDIT:

Удален код, чтобы уважать владельцев авторских прав, на всякий случай. Просто нажмите на вышеуказанную ссылку, чтобы увидеть ее.

2
ответ дан 5 December 2019 в 18:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: