Max*_*ich 3 c# regex linq programming-languages
LINQ表达式可以替换以前使用过正则表达式的所有情况吗?
换一种说法; 是否存在无法用LINQ查询表示的正则表达式?
Jim*_*hel 10
可能为任何给定的正则表达式创建LINQ表达式,但在许多情况下这样做可能是不合理的.即使你消除了诸如反向引用之类的东西,正则表达式也可能是任意复杂的.正则表达式的美妙(我发现使用术语"美"来描述正则表达式有点令人惊讶)是它是一个紧凑且富有表现力但非常狭隘的工具,用于字符串中的模式匹配.
另一方面,LINQ是一种非常富有表现力的通用工具.
采取一个简单的正则表达式(ab)+([0-9^%#@-.,]{1,5})ab[0-9]$.你能为它写一个LINQ表达式吗?如果可以,它将会非常冗长 - 当然比正则表达式更冗长,并且您必须包含获取捕获组的代码.你不仅要说字符串是否匹配表达式,而且你必须说匹配开始的地方,它的长度等等.我怀疑它是可能的,但是你要编写大量的自定义代码来做到这一点.
我不是正则表达式的忠实粉丝,但它确实有它的位置.有时它确实是工作的正确工具.我抓住机会用更好的东西替换它,但LINQ肯定不是它.
| 归档时间: | 
 | 
| 查看次数: | 1913 次 | 
| 最近记录: |