2011-12-10 64 views
0

试图赶上人物在开始字符串和换行符的字符串是正则表达式提高C++

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

正则表达式我使用的是从上面的字符串,我需要赶上.V /和.E/

^.[VE]/* 

但似乎只ctach .V /任何人都可以看到,为什么,因为我以为^藏汉意味着换行符字符串的开始?任何帮助将非常gratefull ive这个问题有一段时间了。如果这不是正确的方式,那么你可以提出一种不同的方式。

+0

您需要“/ 1LBLOG”和“0134249356001”值吗? – rkmax

+0

不是我需要它来检查.V /和.E /是否出现在新行的开头,所以它的“.V /”不是1BLOG和“。E /“不是0134249356001希望有帮助吗? – CodersSC

回答

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].* 

滥用的事实,.默认情况下不匹配换行符。

+0

,这是正确的,但是直到\ n或字符串结尾时才会包含\ n或直到字符串结尾,因为.E位于新行如果你不明白这一点正确 – CodersSC

+0

@ShamariCampbell检查更新的答案 – FailedDev

+0

是的,这是字符串的样子,从那我需要检查.V /和.E /存在,但这个正则表达式^。[VE] /只是捕获.V /? – CodersSC

0

,如果你需要.V或.E尝试^.(V|E)/*的或|运营商检查^.V/*^.E/*

+0

我需要它来检查两者,但据我记得我可以将该运算符更改为&运算符或它是&& – CodersSC

+0

我建议你自己尝试一下不同的例子,在任何支持正则表达式的文本编辑器我都使用文本Sublime 2 – rkmax

0

.在正则表达式中匹配任何单个字符,而不是字面值.。如果你想匹配一个文字周期,你需要逃避它(\.)。 *不匹配任何数量的任何字符(如大多数shell),而是匹配零个或更多的实例。例如,A*将匹配文字字母AAAAA等,.*将匹配任何字符串。

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

+0

好吧,所以与正则表达式搜索是可能的,还可以检查weather.V /和.E /在字符串或新行的开头等? – CodersSC

+0

如果您使用''\。[VE] /.*$'('$'是该行的末尾)之类的东西来使用regexp_match(),它应该只匹配以'.V /'或' .E /'。 – Staven

+0

它匹配.V /但不是.E /只匹配如果.E /是字符串的开头 – CodersSC