青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 26, comments - 2, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

regex——正則表達(dá)式中使用方括號

Posted on 2010-04-12 13:14 小夜 閱讀(5652) 評論(0)  編輯 收藏 引用 所屬分類: [61] Linux[51] C&C++

工作中經(jīng)常需要在正則表達(dá)式中使用方括號,比如匹配Linux系統(tǒng)命令行提示符“[root@localhost ~]# ”。在python中,可以使用正則表達(dá)式“[\[][^\[\]]*[\]][#|$] ”進(jìn)行匹配,但在regex中此正則表達(dá)式無法正確匹配。
由于man手冊中缺少對方括號轉(zhuǎn)義的介紹,本文對regex中方括號的使用進(jìn)行測試,測試程序如下:

#include <stdio.h>
#include 
<string.h>

#include 
<sys/types.h>
#include 
<regex.h>

int main(int argc, char** argv)
{
        
char * pattern, *mstr;
        
int x, z, lno = 0, cflags = REG_EXTENDED;
        
char ebuf[128], lbuf[256], format[32];
        regex_t reg;
        regmatch_t pm[
10];
        
const size_t nmatch = 10;

        pattern 
= argv[1];
        z 
= regcomp(&reg, pattern, cflags);

        
if (z != 0)
        
{
                regerror(z, 
&reg, ebuf, sizeof(ebuf));
                fprintf(stderr, 
"%s: pattern '%s' \n",ebuf, pattern);
                regfree(
&reg);
                
return 1;
        }


        
while(fgets(lbuf, sizeof(lbuf), stdin))
        
{
                
++lno;
                
if ((z = strlen(lbuf)) > 0 && lbuf[z-1]== '\n') lbuf[z - 1= 0;

                z 
= regexec(&reg, lbuf, nmatch, pm, 0);
                
if (z == REG_NOMATCH)
                
{
                        printf(
"not match\n");
                        
continue;
                }

                
else if (z != 0)
                
{
                        regerror(z, 
&reg, ebuf, sizeof(ebuf));
                        fprintf(stderr, 
"%s: regcom('%s')\n",
                                        ebuf, lbuf);
                        
return 2;
                }


                
if (pm[0].rm_so!=-1)
                        printf(
"%04d: %s\n", lno, lbuf);
                
for (x = 0; x < nmatch && pm[x].rm_so != -1++ x)
                
{
                        mstr 
= strndup(lbuf + pm[x].rm_so, pm[x].rm_eo-pm[x].rm_so);
                        printf(
" $%d: %s\n", x, mstr);
                        free(mstr);
                }

                fflush(stdout);

        }


        regfree(
&reg);
        
return 0;
}
下面是對正則表達(dá)式“[\[][^\[\]]*[\]][#|$] ” 的測試,顯然不符合要求。
./testreg "[\[][^\[\]]*[\]][#|$] "  
[root@localhost bin]# 
not match
[a\]# 
0005: [a\]# 
 $
0: [a\]# 
從簡單的開始先測試左括號“[”的匹配:
./testreg "[\[]+"
a
not match
[
0002: [
 $
0: [
[root@localhost bin]# 
0003: [root@localhost bin]# 
 $
0: [
再測試右括號“]”:
./testreg "[\]]+"
]
not match
\]  
0002: \]
 $
0: \]
-----------------
.
/testreg "[]]+"
]]
0001: ]]
 $
0: ]]
兩個簡單的正則表達(dá)式可以看出:regex中左方括號需要轉(zhuǎn)義,右方括號不需要轉(zhuǎn)義。
下面我們再來測試匹配一下任意非方括號字符:
./testreg "[^\[]]+" //對[轉(zhuǎn)義,不對]轉(zhuǎn)義
[abc]
0001: [abc]
 $
0: c]
.
/testreg "[^\[\]]+" //對[和]轉(zhuǎn)義
[abc]
0001: [abc]
 $
0: c]
.
/testreg "[^]\[]+" //對[轉(zhuǎn)義,不對]轉(zhuǎn)義,且把]放在^后使]不與前面的[匹配
[abc]
0001: [abc]
 $
0: abc
通過上面測試可以得出正確的正則表達(dá)式來匹配Linux命令行提示符——“[\[][^]\[]*[]][#$] ”或“\[[^]\[]*][#$] ”。
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲精品一区二区在线| 蜜臀av性久久久久蜜臀aⅴ| 欧美专区亚洲专区| 亚洲制服av| 亚洲一二区在线| 久久久久久伊人| 亚洲——在线| 国产精品扒开腿爽爽爽视频| 亚洲精品看片| 91久久在线| 欧美—级a级欧美特级ar全黄| 在线播放亚洲| 欧美激情无毛| 国产亚洲二区| 久久亚洲精选| 欧美精品v日韩精品v国产精品 | 在线精品国产欧美| 国内免费精品永久在线视频| 欧美不卡在线视频| 免费成人毛片| 一本久久综合| 午夜欧美不卡精品aaaaa| 久久精品91久久久久久再现| 亚洲一区欧美| 亚洲一区二区av电影| 国产伦一区二区三区色一情| 国产日韩精品一区二区三区| 日韩视频免费观看| 亚洲欧洲日韩女同| 欧美三级视频在线播放| 亚洲自啪免费| 午夜日韩福利| 在线看无码的免费网站| 亚洲国产成人精品久久久国产成人一区 | 伊人婷婷欧美激情| 免费日韩视频| 欧美精品三级| 午夜精品一区二区三区四区 | 欧美日韩成人一区| 久久av资源网| 欧美不卡激情三级在线观看| 亚洲私拍自拍| 久久精品国产久精国产思思| 亚洲精品久久视频| 亚洲欧美日韩第一区| 激情综合色综合久久| 91久久在线观看| 国产日韩亚洲欧美| 欧美激情视频一区二区三区不卡| 欧美色偷偷大香| 另类av导航| 欧美视频在线视频| 模特精品裸拍一区| 亚洲欧洲一区二区在线播放| 欧美国产精品v| 国产精品vvv| 欧美成人在线网站| 国产精品久久久久免费a∨大胸| 久久一区二区精品| 国产精品久久福利| 欧美激情按摩在线| 国产日韩精品一区二区三区在线 | 欧美顶级少妇做爰| 欧美在线视频一区二区| 欧美激情aaaa| 麻豆国产精品一区二区三区 | 久久久久久香蕉网| 欧美三级乱人伦电影| 欧美国产日韩精品| 红桃视频国产一区| 亚洲综合视频1区| 一区二区三区视频在线观看| 乱中年女人伦av一区二区| 欧美亚洲日本网站| 欧美午夜无遮挡| 亚洲人成人99网站| 亚洲经典在线| 久久资源av| 老牛国产精品一区的观看方式| 国产精品免费区二区三区观看| 亚洲欧洲日产国产网站| 亚洲人永久免费| 麻豆久久婷婷| 国产日韩欧美91| 国产精品永久在线| 亚洲欧洲日产国产综合网| 在线看日韩欧美| 久久看片网站| 麻豆成人av| 亚洲大胆在线| 久久欧美中文字幕| 久久只精品国产| 狠狠色丁香久久婷婷综合_中| 亚洲欧美成人在线| 午夜精品久久久久久久久久久久久 | 国产精品美女久久久久aⅴ国产馆| 亚洲国产日韩欧美一区二区三区| 激情婷婷亚洲| 久久久久久有精品国产| 免费在线观看日韩欧美| 在线观看国产精品网站| 久久久夜精品| 亚洲韩国日本中文字幕| 一区二区三区日韩欧美| 欧美日韩在线高清| 亚洲视频导航| 久久九九久久九九| 亚洲激情黄色| 欧美日韩一级视频| 亚洲欧美另类在线观看| 久久综合伊人77777尤物| 91久久国产自产拍夜夜嗨| 欧美激情小视频| 亚洲视频精品| 久久在线精品| 日韩一本二本av| 国产精品久99| 欧美在线一级va免费观看| 欧美成人免费小视频| 亚洲最新合集| 国产区在线观看成人精品| 久久网站热最新地址| 亚洲精品少妇30p| 欧美在线视频一区二区| 亚洲激情在线观看视频免费| 国产精品久久久久77777| 久久国产天堂福利天堂| 亚洲二区三区四区| 亚洲欧美一区二区在线观看| 激情五月***国产精品| 欧美日韩性视频在线| 欧美在线观看视频一区二区三区| 亚洲福利视频专区| 先锋影音网一区二区| 亚洲第一精品福利| 国产精品第一区| 久久亚洲一区二区| 亚洲午夜精品久久久久久浪潮| 免费看av成人| 欧美亚洲一级片| 日韩亚洲精品电影| 国产一区二区三区在线免费观看 | 国内精品久久国产| 欧美日韩免费高清| 久久精品国产在热久久| 一区二区三区四区五区在线| 国产精品久久久久久久7电影| 亚洲国产欧美一区二区三区同亚洲 | 欧美成人精品三级在线观看| 亚洲一级电影| 亚洲欧洲综合另类在线| 国产视频综合在线| 欧美视频官网| 欧美精品二区| 久久婷婷成人综合色| 欧美一级在线播放| 亚洲视频国产视频| 日韩五码在线| 亚洲人成在线播放| 你懂的亚洲视频| 久久久久国产精品人| 欧美一区二区免费| 亚洲伊人网站| 亚洲视频一二区| 一区二区三区久久| 日韩一二在线观看| 亚洲精品日本| 亚洲激情图片小说视频| 怡红院精品视频| 国内一区二区在线视频观看| 国产精品久久久久久久久搜平片 | 另类av一区二区| 欧美激情国产日韩精品一区18| 亚洲精品乱码久久久久久日本蜜臀| 日韩午夜免费| 在线视频免费在线观看一区二区| 亚欧成人在线| 亚洲欧美电影在线观看| 久久中文字幕一区二区三区| 久久aⅴ国产紧身牛仔裤| 欧美成人中文| 免费久久99精品国产自在现线| 欧美日韩在线免费观看| 欧美成人免费va影院高清| 国产自产在线视频一区| 一本色道久久综合狠狠躁的推荐| 在线观看精品| 性欧美videos另类喷潮| 正在播放日韩| 国产精品国内视频| 午夜精品亚洲| 欧美一区二区在线看| 亚洲欧美国产精品专区久久| 久久er精品视频| 欧美在线播放一区| 亚洲第一福利社区| 亚洲日本va午夜在线电影 | 亚洲一二三区精品| 欧美亚洲免费电影| 欧美性事在线|