大体上一致,至少思想上是一致的,但细节方面,各正则表达式引擎还是有所区别的,例如有些正则表达式反向不定长侦测,有些则不支持反向侦测或者要求定长(具有最长限制),java和.NET的引擎总体上都是比较强的。
.NET引擎支持条件匹配,像一般编程语言中的if...then...else之类的,即表示“如果匹配到了A,则接着匹配B,否则接着匹配C”之类的写法,java引擎不支持,只能写两个表达式执行两次了。
java引擎独有的功能是方括号表示的字符集合允许交、并运算,在某些特殊场景下很有用处,例如:想匹配除了“和”、“与”、“及”三个字以外的其它汉字,可以表示为[[\u4E00-\u9FCB]&&[^和与及]],别的引擎就复杂了,必须用四个区间表示,可读性不佳。
欲知各引擎之间的详细差别,建议下载一个RegEx Buddy软件,其中的帮助中列示很全,找本《精通正则表达式》之类的书看看也行。
同意 闹事银霞 的观点。现在大多数语言,用的正则引擎都是差不多。也就是说,你就抓着你需要的那一门,钻研一个月,将简单的匹配,前匹配,后匹配什么的搞明白,三种模式 贪婪侵占懒惰 弄清楚, 组的使用, 等等,等这些明白之后。熟练运用之后,你就发现再看js的正则,就很easy了。因为正则的写法很雷同,而只是前后多加了个/*而已, 所以,别的语言下的正则,也基本是规律
比如我,我就是研究的java正则,研究的差不多之后, 然后数据库的正则,js的正则,就没看语法,自己就能写出来。呵呵
没有必要为这个烦恼。很不值得
正则表达式是通用的不存在语言上的差别,要不正则表达式就不会应用这么广了