Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.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
如何将Ruby正则表达式转换为PCRE_Ruby_Regex_Pcre - Fatal编程技术网

如何将Ruby正则表达式转换为PCRE

如何将Ruby正则表达式转换为PCRE,ruby,regex,pcre,Ruby,Regex,Pcre,我想把一些ruby代码重写成c/c++代码,所以我想使用一个用c实现的正则表达式库。看来PCRE是个不错的选择。有许多ruby风格的正则表达式。如何将其自动转换为PCRE样式。Ruby是正则表达式,因为PCRE代表与Perl兼容的正则表达式,并为其支持的正则表达式定义了特定语法 有关单个PCRE正则表达式特性的帮助,请参阅我链接的第二篇文章;对于ruby特定的方法,请参阅第一篇文章(您将看到,实际使用的正则表达式的语法是相同的) 编辑:正如在注释中指出的,ruby使用的正则表达式引擎是,根据链接

我想把一些ruby代码重写成c/c++代码,所以我想使用一个用c实现的正则表达式库。看来PCRE是个不错的选择。有许多ruby风格的正则表达式。如何将其自动转换为PCRE样式。

Ruby是正则表达式,因为PCRE代表与Perl兼容的正则表达式,并为其支持的正则表达式定义了特定语法

有关单个PCRE正则表达式特性的帮助,请参阅我链接的第二篇文章;对于ruby特定的方法,请参阅第一篇文章(您将看到,实际使用的正则表达式的语法是相同的)


编辑:正如在注释中指出的,ruby使用的正则表达式引擎是,根据链接到页面,它具有Perl5.10的一些新特性。PCRE是一个正则表达式库,“PCRE的当前实现大约与Perl 5.12对应”,因此边缘可能存在一些差异。虽然语法基本相同,但请查看OnigomGithub页面和RubyAPI dock以了解其区别。总的来说,假设您从ruby转换到PCRE的大多数正则表达式都可以正常工作,这可能是安全的

有一个Ruby构造可能会导致问题:
{code}

这可以在正则表达式中使用,它将被代码的结果替换(如双引号字符串)


一个例子:
“dideldideldummdumm”.match(/didel{dumm'*2}/)

你能提供一些“Ruby正则表达式”的例子吗?这些“Ruby正则表达式”不能在c/c++代码中复制并用作PCRE?如果我错了,请纠正我,但我认为Ruby实际上使用了PCRE。@p11y是Ruby当前使用的MRI。我不认为早期版本使用PCRE-其他实现可能会使用。PCRE是一个特定的正则表达式库。当前的MRI Ruby使用正则表达式引擎。虽然这两个引擎可能有许多相同的功能,但它们并不相同。@matt I认为Onigom与PCRE兼容?PCRE手册页说它使用“与Perl相同的语法和语义,只是有一些不同”,并且“对一个或两个.NET和Oniguruma语法项有一些支持”(Onigom是Onigurama的一个分支)Onigom自述说“可以使用Perl5.10+中引入的一些新特性”。它们可能是广泛兼容的,但在边缘方面会有差异,特别是在更高级和模糊的功能方面。我的观点是,PCRE是一个库,而不是一个规范,Ruby不使用它。@matt Good point,也在PCRE页面上说“PCRE的当前实现大约与Perl 5.12相对应”,因此Onigom是后面的几个重点版本。我将编辑我的答案以包含此信息,感谢您指出。如果您认为还需要添加/更改其他内容,请告诉我。