有没有办法在C ++ TR1正则表达式中使用dot(。)匹配换行符?

时间:2010-01-12 21:24:05

标签: c++ regex tr1

我在http://msdn.microsoft.com/en-us/library/bb982727.aspx上找不到任何相关内容。

也许我可以使用'[^] +'来匹配所有内容,但这似乎是一个黑客?

感谢。

4 个答案:

答案 0 :(得分:11)

Boost.Regex有一个mod_s标志,使点匹配换行符,但它不是TR1正则表达式标准的一部分。 (据我所见,并没有作为Microsoft扩展提供)

作为一种解决方法,您可以使用[\s\S](这意味着匹配任何空格或任何非空格)。

答案 1 :(得分:7)

由于C ++正则表达式似乎基于ECMAScript正则表达式,因此JavaScript中answer to the recent question的相同内容可能对您有所帮助。

[^]应该有用,但是如果你想要一些更清晰,更少hackish的东西,你可以试试(.|\n)

答案 2 :(得分:5)

人们使用的一个技巧是包含任何非空字符的字符类。空字符以十六进制表示。它看起来像这样:

[^\x00]+

答案 3 :(得分:1)

您可以切换到正则表达式的非ECMA风格(有许多标志来控制regext风格)。如果我没记错的话,任何POSIX正则表达式都应该将换行符与.匹配。