精通正则表达式第3版(C#中的正则表达式和js中的是否一样)

本文目录
C#中的正则表达式和js中的是否一样
正则表达式只是一个系统的概念,然后具体语言再对其实现。
其实两者是不同的。但是由于使用者的习惯,大部分的时间是相同的。
在js中正则表达式是一个类型。可以直接使用var s = /pattern/;这样的形式实现。所以说在js只直接是一种类型的。象用其他诸如字符串等类型一样使用他,只不过定界符不同。
而在C#本身是不存在的,直接使用的是一种类库中的一个类实现的。也就是说正则表达式其实只是类库中的一个类而已。然后对这个类定义有几个静态变量,变量,方法与函数等等,你只要知道他是一个类就可以了!
至于相同的部分那就是大部分的元字符表示法,比如^表示开始,$表示结尾等等,也就是说他们大部分相同的地方就是对于元数据的定义,\d等等,这样你在不同的语言中,虽然实现不同,但对于元数据却使用相同的东西,以便于你的记忆,不必到各种语言中都再去学习了。
不同的是对于表达式的限定及扩展不一样的。在js中你可以直接跟在后面实现,如:
var s = /pattern/igm;
后边的i表示忽略大小写,g表示全局,m表示多行。
但在C#中利用的是另一个参数,regexoptions,枚举型的,除了这些这外还有对编译等等,比js要多。而对于运算符如|选择?等都是一样的!也就是说,js中的写法在C#中一定能用,除模式限制部分,而在C#中的写法大部时间js也能用。
表达式还是要学习的,不是学的元数据表示,而是对于那个类语法的学习,比如在js中存在test方法,就是测试匹配,但不设置变量,而在C#中没有,有一个isMatch与之相同功能。不学习这些东西你怎么会知道呢?所以必须要学习的,而且顺便说一下C#上的正则表达式比js强多了,还有很多的东西是js正则表达式中所没有的,比如动态正则表达式,而在js中是不可能实现的。在C#中却可以实现。如果不学习,那么你的表达式也只能处于常用的基础上!
所以很不暂同一楼的观点。
使用正则表达式的优缺点 C#
书,当然首选《精通正则表达式》
第三版,现在网上也有电子书,你可以看看
我觉得最大的缺点有以下几个方面:
1.正则表达式只适合匹配文本字面,不适合匹配文本意义:像匹配url,email这种纯文本的字符就很好,但比如匹配多少范围到多少范围的数字,如果你这个范围很复杂的话用正则就很麻烦。或者匹配html,这个是很多人经常遇到的,写一个复杂匹配html的正则很麻烦,不如使用针对特定意义的处理器来处理(比如写语法分析器,dom分析器等)
2.容易引起性能问题:像.*这种贪婪匹配符号很容易造成大量的回溯,性能有时候会有上百万倍的下降,编写好的正则表达式要对正则引擎执行方式有很清楚的理解才可以
3.正则的替换功能较差:甚至没有基本的截取字符串或者把首字母改变大小写的功能,这对于url重写引擎有时候是致命的影响
但是也有优点:只要熟练应用正则表达式,而且匹配的目标是纯文本,那么相比于写分析器来说,正则可以更快速的完成工作。还有在捕获字符串的能力,正则也可以很好的完成工作,比如截取url的域名或者其他的内容等等

更多文章:
字符串“\t\t\t”的长度?编写算法,将字符串t插入到字符串s中第i个字符位置
2026年2月1日 00:45
全栈java工程师培训(北大青鸟java培训:Java全栈工程师需要掌握哪些知识)
2025年6月12日 22:30
wrap在服装上是什么意思(英语服装设计专业术语大全,英语服装设计专业术语大全)
2025年10月2日 02:00
pytorch lightning(PyTorch Lightning 中的批量测试及其存在的问题)
2025年12月1日 20:15
hoisting什么意思(musical fountain是什么意思)
2026年3月7日 04:00
java与mysql建立连接(java怎么连mysql数据库)
2025年7月22日 15:15
rank函数递减次序排名(如何利用rank函数,降序“成绩排名”)
2026年3月4日 05:45
满二叉树和完全二叉树到底有什么区别,他们定义不是差不多?请解释“满二叉树一定是完全二叉树,而完全二叉树不一定是满二叉树”谢谢了!
2025年8月4日 22:00
java编写网络代码(如何用70行Java代码实现深度神经网络算法)
2026年7月1日 19:15
进程管理有哪些特性(操作系统一般具有哪些特征,这些特征在进程管理中是如何体现的)
2026年3月24日 23:30
db2数据库连接数突增(db2数据库导入时自动增长的ID列如何填写)
2026年4月27日 00:00
python的安装选项怎么勾选(python怎么安装 python安装教程)
2025年10月9日 10:15











