2011-12-10 103 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