正则表达式 - 所有语言都一样吗?

时间:2009-12-29 07:14:54

标签: php javascript regex

是语言之间的正则表达式相同吗?

例如,

。如果我想在javascript中使用它,我是否必须专门为javascript搜索regexp。因为我得到了一些备忘单。它只是说正则表达式。

我想知道我是否可以在所有语言,php,javascript等上使用它。

4 个答案:

答案 0 :(得分:13)

基础知识大致相同,但由于PHP使用PCRE(Perl兼容正则表达式),因此引擎支持语言,PHP和JavaScript之间存在一些差异。

PHP还具有POSIX兼容的正则表达式引擎(ereg_ *函数),但不推荐使用。

如果您还没有使用它,我建议您尝试RegexBuddy。它可以在几个Regex引擎之间进行转换。

您可以找到alternatives for RegexBuddy on Mac here

答案 1 :(得分:2)

您可能希望从查看here开始。当我做正则表达时,那是我的圣经!

现在,正则表达式在任何地方应该是相同的,至少是fundementals,但是在某些情况下它会从编译器到编译器(或者如果你愿意的话,还是解释器)不同。

那些可能是你搜索特定模式的方式,让我们以\w为例,在c#中是seach for a word,但javascript中的模式可能不同。

当你遇到这样的特殊情况时,你可能想要修改上面提供的链接。

答案 2 :(得分:1)

正则表达式synax在不同语言之间略有不同,但大部分细节都相同。一些正则表达式实现支持稍微不同的处理方式以及某些特殊字符序列的含义。

Google是你最好的朋友。 Google使用您选择的语言进行正则表达式。

答案 3 :(得分:0)

正则表达式中最大的变化之一是如何转义/解释特殊字符。

例如,grep,vim和perl正则表达式的不同之处在于如何处理像()这样的事情,用于分组/捕获用于搜索和反馈中的反向引用的模式。更换。 IIRC,Perl直接使用它们,而grep和vim要求它们被转义。

此外,Perl正则表达式可能支持比早期正则表达式引擎更多的功能。在Perl中简单的正则表达式是grep中的主要Pita。

我不完全确定这是否是一种正确的方法来总结,但基本上有两大类正则表达式--Posix(grep和类似工具)和Perl兼容(带有微小变化)。

我发现有用的一个工具是The Regex Coach - interactive regular expressions