RegEx引擎在多大程度上相互兼容?

时间:2015-10-21 15:49:22

标签: regex r emacs ess

我正在为R中的工作创建正则表达式,使用Emacs中的ESS作为我的环境。 R本身使用PCRE engine,它是用C和C ++编写的。

问题

我想知道,如果我将代码发送给其他人,使用不同版本的R,也许是在一个完全不同的环境中,RegEx的工作方式是否完全相同?你经常面对这样的问题吗?你有没见过一个?

逻辑告诉我,如果这个人正在运行我的代码,那么他们正在使用相同的编译器等。(当然你不会在某种R shell以外的任何东西中运行R代码!) - 但是有些我读过的东西让我质疑这个逻辑。

我的发现

this site可能很清楚答案,但我不明白这一点。以下是StackOverflow regex tag

的摘录
  

Perl编程语言具有Henry Spencer正则表达式库的显着修改和增强版本。随着Perl v5的发布,引入了进一步的增强功能,包括前瞻,外观,非提交匹配,非捕获组等。通过Philip Hazel的库重新实现PCRE,这些功能可以在许多其他编程语言中使用,包括但不限于PHP,Python和R.因此,Perl兼容的正则表达式是广泛使用的正则表达式的第三种主要方言

然后看起来PCRE很好,但是我应该担心我在Emacs中,而其他人可能会在另一个文本编辑器中读取我的代码(该文本继续提到这个问题)?

额外信息

作为compatibility issue的一个可能示例:我在查看我的巨大文本文件时使用Emacs中的re-builder函数,所以我在迷你中输入我的正则表达式-buffer和匹配在上面显示的文本中突出显示。我终于钉了它,把这个正则表达式粘贴到我的R代码中......繁荣......它没有完成任务。 也许这将成为我在R(gsub)中使用的实际函数的一个问题,但它仍然表明存在兼容性问题。这是R中失败的函数,但在Emacs're-builder

中工作
gsub("http:.*?[([:space:])| |\n]", "", x))

0 个答案:

没有答案