正则表达式提升c ++

时间:2011-12-10 13:46:51

标签: c++ boost boost-regex

尝试捕获字符串开头的字符,字符串换行符

.V/1LBOG\n.F/AV0094/08NOV/SAL/Y\n.E/0134249356001"

我使用的正则表达式来自上面的字符串,我需要捕获.V /和.E /

^.[VE]/*

但它似乎只是ctach .V /任何人都可以看到为什么我认为^意味着换行符以及字符串的开头?任何帮助都会非常感激,因为我已经暂时解决了这个问题。如果这不是正确的方式,那么你可以采用不同的方式。

3 个答案:

答案 0 :(得分:0)

如果您需要.V或.E,请尝试^.(V|E)/*|运算符对检查^.V/*^.E/*

非常有用

答案 1 :(得分:0)

正则表达式101:

^表示字符串的开头。而你猜对了。只能有一个字符串的开头。

^.[VE]/*

表示:

匹配字符串的开头,后跟任何字符(除了换行符),然后是V或E,接着是0到n /(贪婪)。

可能你想要这样的东西:

\.[VE].*?(?:\\n|$)

这意味着匹配一个点,然后是V或E并匹配所有内容,直到\n或字符串结尾。

评论我是不是错了。

所以.V/1LBOG\n.F/AV0094/08NOV/SAL/Y\n.E/0134249356001"

看起来像这样?

.V/1LBOG
.F/AV0094/08NOV/SAL/Y
.E/0134249356001"

如果是,那么你需要稍微改变你的正则表达式:

\.[VE].*

默认情况下滥用.与新行不匹配的事实。

答案 2 :(得分:0)

正则表达式中的

.匹配任何单个字符,而不是文字.。如果要匹配文字句点,则需要将其转义(\.)。 *与任何数量的任何字符都不匹配(就像大多数shell一样),而是匹配您放在它之前的任何内容的零个或多个实例。例如,A*将匹配字母AAAAA等,而.*将匹配任何字符串。

^表示一行的开头。 ^\.[VE]/将匹配.V/.E/(但仅限于该行的开头)。