[英]regular expressions boost c++
試圖在字符串的開頭和換行符處捕獲字符
.V/1LBOG\n.F/AV0094/08NOV/SAL/Y\n.E/0134249356001"
我正在使用的正則表達式來自上面的字符串,我需要捕獲.V /和.E /
^.[VE]/*
但這似乎只是ctach .V /,誰能明白我為什么以為^意味着換行以及字符串開頭? 我已經很久沒有遇到任何問題了,對您的幫助將不勝感激。 如果這不是正確的方法,那么您可以提出另一種方法。
如果需要.V或.E,請嘗試^.(V|E)/*
或|
運算符可用於檢查^.V/*
或^.E/*
正則表達式101:
^
表示字符串的開頭。 您猜對了。 只能有一個字符串開頭。
^.[VE]/*
表示:
匹配字符串的開頭,后跟任何字符(換行符除外),然后是V或E,然后是0至n /
(貪婪)。
可能您想要這樣的東西:
\.[VE].*?(?:\\n|$)
這意味着匹配一個點,后跟V或E並匹配所有內容,直到\\n
或字符串結尾。
如果我錯了,請發表評論。
因此.V/1LBOG\\nF/AV0094/08NOV/SAL/Y\\nE/0134249356001"
看起來像這樣嗎?
.V/1LBOG
.F/AV0094/08NOV/SAL/Y
.E/0134249356001"
如果是,那么您需要稍微修改一下正則表達式:
\.[VE].*
濫用事實.
默認情況下不匹配換行符。
.
在正則表達式中匹配任何單個字符,而不是文字.
。 如果要匹配立即數,則需要對其進行轉義( \\.
)。 *
不匹配任何數目的任何字符(就像大多數shell一樣),而是匹配零個或多個您放置在其前面的任何實例。 例如, A*
將匹配文字字母A
, AAAA
等,而.*
將匹配任何字符串。
^
表示行的開頭。 ^\\.[VE]/
將匹配.V/
和.E/
(但僅在行的開頭)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.