C #, Regex & оператор AND

1

Я пытаюсь написать выражение регулярного выражения, которое создаст соответствие для любой строки, содержащей символы "a", "b" и "c". Он должен содержать их всех, но порядок не имеет значения.

"axbxcx" -> true
"cba" -> true
"cbx" -> false

Я пробовал различные методы.

searchRegex = new Regex(("a")("b")("c"))
searchRegex = new Regex("a+b+c+")
searchRegex = new Regex([abc])

Код, который я пытаюсь реорганизовать, следующий:

return input.Contains("0") && input.Contains("1") && input.Contains("a");

Это можно сделать?

Грегори

  • 2
    Почему вы хотите использовать регулярные выражения для решения этой проблемы? Это выполнимо с регулярными выражениями, но намного легче без.
  • 0
    Мой код требует много времени для выполнения, и я где-то прочитал, что при использовании регулярных выражений произошли значительные улучшения скорости. Это не правда?
Показать ещё 22 комментария
Теги:

1 ответ

3
Лучший ответ

Прежде чем перейти к регулярному выражению, обратите внимание, что input.Contains("a") && input.Contains("b") && input.Contains("c") работает, намного яснее и предлагает, вероятно, лучшую производительность.

При этом регулярное выражение (?=.*a)(?=.*b)(?=.*c).* Будет работать для вас.

Он утверждает, что строка содержит a, a b и c и один раз, когда это делается, оно соответствует чему-либо.

  • 0
    Я согласен, утверждения 3 содержат просто отлично для этой простой работы. Если он вырастет более чем на 3, вы можете подумать о том, чтобы преобразовать его в цикл.
  • 0
    @ mertens3d Из новых деталей вашего вопроса я вижу, что вы уже используете первый способ. Это простой и быстрый код, который, конечно, не является вашим узким местом. Оценивайте, прежде чем пытаться оптимизировать, иначе вы потеряете время на наборе миллисекунд.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню