Вам нужно и регулярное выражение, и строку для проверки, например:
var regEx = new Regex(@"(-?\d +)x\^ 2([+-]\d +)x([+-]\d +)");
var match = regEx.Match("string to test");
или, если вы не планируете использовать его более одного раза, вы можете использовать статический метод, подобный этому: [ 114]
var match = Regex.Match("string to test", @"(-?\d +)x\^ 2([+-]\d +)x([+-]\d +)");
Если вам нужна коллекция совпадений, а не только первая, вы можете получить их так:
var matchCollection = regEx.Matches("string to test");
Да; связанный прием - то, если у Вас есть X потенциальных фильтров, некоторые из них дополнительный, должен иметь шаблон, говорят " AND ( ?=-1 OR some_field = ? ) "
, и создайте специальную функцию, которая переносит выполнить вызов и связывает всю секунду? s. (в этом случае,-1 специальное значение, означающее, 'игнорируют этот фильтр').
Обновление от Paul Tomblin: Я отредактировал ответ для включения предложения из комментариев.
Я думаю, что это - разумный подход. Это следует за нормальным шаблоном фильтра приятно и должно дать хорошую производительность.
Таким образом, Вы полагаетесь на замыкание накоротко семантики булевых выражений для вызова Вашего IS NULL
состояние? Это, кажется, работает.
Один интересный момент то, что константное выражение как 1 = 0
это не имело параметров, должен быть факторизован оптимизатором запросов. В этом случае, так как оптимизатор не знает, является ли выражение константой true
или false
до выполняют время, которое означает, что не может факторизовать его. Это должно оценить выражение для каждой строки.
Таким образом, можно предположить, что это добавляет незначительную стоимость для запроса, относительно того, чего он стоил бы при использовании непараметризованного константного выражения.
Затем объединение с OR
с IS NULL
выражение может также иметь последствия для оптимизатора. Это могло бы решить, что не может извлечь выгоду из индекса на deleted_on
, тогда как в более простом выражении это имело бы. Это зависит от реализации RDBMS, которую Вы используете, и распределение значений в Вашей базе данных.