Вероятно, можно создать выражение LINQ для любого заданного регулярного выражения, но во многих случаях это, вероятно, будет неразумно. Даже если вы исключите такие вещи, как обратные ссылки, регулярные выражения могут быть сколь угодно сложными. Красота регулярных выражений (и я нахожу несколько удивительным, что я использую термин «красота» для описания регулярных выражений) в том, что это компактный и выразительный, но очень узко сфокусированный инструмент для сопоставления с образцом в строках.
LINQ, с другой стороны, является очень выразительным инструментом общего назначения.
Возьмите простое регулярное выражение, например (ab)+([0-9^%#@-.,]{1,5})ab[0-9]$
. Можете ли вы написать выражение LINQ для этого? Если вы можете, это будет довольно многословно - конечно, гораздо более многословно, чем регулярное выражение, и вам придется включить код, который получает группы захвата. Вы должны не только сказать, соответствует ли строка выражению, но и сказать, где начинается совпадение, как долго оно длится и т. Д. Я подозреваю, что это возможно, но вы собираетесь написать множество пользовательских кодов для сделай это.
Я не большой поклонник регулярного выражения, но у него есть свое место. Иногда это действительно правильный инструмент для работы. Я воспользовался бы шансом заменить его чем-нибудь получше, но LINQ точно не так.