2010-03-29 32 views

回答

2
/^[\.:\,()\'\`-]/ 

应该变成

"^[.:,()'`-]" 

在C++中不存在特殊的Perl正则表达式分隔符/,所以正则表达式只是一个字符串。在这些字符串中,您需要注意正确地排除反斜杠(\\,在原始正则表达式中每\)。但在你的例子中,所有反斜杠都是不必要的,所以我完全放弃了它们。

还有其他一些注意事项;据我所知,一些Perl功能(如可变长度lookbehind)在Boost库中不存在。所以它可能无法简单地翻译任何正则表达式。不过,你的例子应该没​​问题。尽管其中有些很奇怪。 .*[0-9].*将匹配任何包含某个数字的字符串,而不是all numbers

+1

在Perl中不需要内部字符类('[...]')。 – mob 2010-03-29 14:48:24

+0

对。他们没有必要开始。在某些情况下,不必要的反斜杠甚至可能成为语法错误(例如'\ <')。 – 2010-03-29 14:55:51

3

最重要的区别是,在C++正则表达式都是字符串,因此,所有的正则表达式特殊反斜杠序列(如\w\d应该用双引号("\\w""\\d"

+0

这个perl表达式怎么样:'/ O $ /' $ in perl表达式的结尾是什么意思? 另一个问题是:当我在boost中编写例如表达式“^ B_”时,意味着什么? – Yadollah 2010-04-30 17:09:47

相关问题