我想将一些ruby代码重写为c / c ++代码,所以我想使用c中实现的正则表达式库。似乎PCRE是一个不错的选择。有许多红宝石风格的正则表达式。如何自动将其转换为PCRE样式。
答案 0 :(得分:5)
Ruby regular expressions是PCRE
正则表达式,因为PCRE代表Perl兼容正则表达式,并为它支持的正则表达式定义特定语法。
有关单个PCRE正则表达式功能的帮助,请参阅我链接到的第二篇文章,对于ruby特定方法,请参阅第一篇(正如您将看到的,实际使用的正则表达式的语法是相同的)
编辑:正如评论中所指出的,ruby使用的正则表达式引擎是Onigmo
,根据链接到页面,它具有Perl 5.10的一些新功能。 PCRE是一个正则表达式库,“PCRE的当前实现大致与Perl 5.12相对应”,因此边缘可能存在一些差异。虽然语法基本相同,但请查看Onigmo github页面和ruby api dock以查看差异。虽然可以安全地假设您从ruby转换为PCRE的大多数正则表达式都可以正常工作。
答案 1 :(得分:1)
有一个Ruby构造可能会导致问题:#{code}
这可以在正则表达式中使用,它将被代码的结果替换(如双引号字符串)。
一个例子:"dideldideldummdummdumm".match(/didel#{'dumm'*2}/)