Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
RegEx引擎在多大程度上相互兼容?_Regex_R_Emacs_Ess - Fatal编程技术网

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

RegEx引擎在多大程度上相互兼容?,regex,r,emacs,ess,Regex,R,Emacs,Ess,我正在为R中的工作创建正则表达式,使用Emacs中的ESS作为我的环境。R本身使用的是C和C++编写的。 问题 我想知道,如果我将代码发送给其他人,使用不同版本的R,或者在完全不同的环境中,正则表达式是否也能正常工作?你多久面对一次这样的问题?你见过吗 逻辑告诉我,如果这个人正在运行我的代码,那么他们使用的是同一个编译器等等(当然,除了某种R shell之外,你不会在任何东西中运行R代码!)——然而,我读到的一些东西让我对这个逻辑产生了疑问 我的发现 答案很可能可以从中辨认出来,但我不太明白,无

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

我想知道,如果我将代码发送给其他人,使用不同版本的R,或者在完全不同的环境中,正则表达式是否也能正常工作?你多久面对一次这样的问题?你见过吗

逻辑告诉我,如果这个人正在运行我的代码,那么他们使用的是同一个编译器等等(当然,除了某种R shell之外,你不会在任何东西中运行R代码!)——然而,我读到的一些东西让我对这个逻辑产生了疑问

我的发现

答案很可能可以从中辨认出来,但我不太明白,无法确定。下面是StackOverflow的
regex

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

看起来PCRE确实不错,但我是否应该担心我在Emacs中,而其他人可能会在不同的文本编辑器中阅读我的代码(该文本接着提到了这个问题)

额外信息

作为一个可能的例子:我正在Emacs中使用
re-builder
函数,同时查看我的大文本文件,因此我在一个小缓冲区中输入我的正则表达式,匹配项在上面显示的文本中高亮显示。我终于搞定了,把这个正则表达式粘贴到我的R代码中,然后。。。繁荣它没有完成任务。 这可能是我在R中使用的实际函数的一个问题(
gsub
),但它仍然表明存在兼容性问题。以下是在R中失败的函数,但在Emacs的re-builder中工作:

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

如果你是这个意思的话,就不会有任何结构上的差异。显示您正在使用的正则表达式。我添加了包含正则表达式的函数-其思想是在许多字符串中剪切所有链接。在我的例子中,这是在R的
sapply
函数中使用的。这就是你的问题。此
[([:space:])| |\n]
是一个单独的类。请注意,Emacs regexp与其他环境中的regexp有很大不同。下面是一个示例。您可以将R正则表达式与所有主要正则表达式风格进行比较(浏览左侧的链接)。