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

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

regex——正則表達式中使用方括號

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

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

#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;
}
下面是對正則表達式“[\[][^\[\]]*[\]][#|$] ” 的測試,顯然不符合要求。
./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: ]]
兩個簡單的正則表達式可以看出:regex中左方括號需要轉義,右方括號不需要轉義。
下面我們再來測試匹配一下任意非方括號字符:
./testreg "[^\[]]+" //對[轉義,不對]轉義
[abc]
0001: [abc]
 $
0: c]
.
/testreg "[^\[\]]+" //對[和]轉義
[abc]
0001: [abc]
 $
0: c]
.
/testreg "[^]\[]+" //對[轉義,不對]轉義,且把]放在^后使]不與前面的[匹配
[abc]
0001: [abc]
 $
0: abc
通過上面測試可以得出正確的正則表達式來匹配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>
            久久成年人视频| 欧美人与性禽动交情品 | 欧美日韩国产区一| 久久九九热免费视频| 亚洲日本中文| 久久永久免费| 影音先锋在线一区| 亚洲精品日韩激情在线电影| 久久九九热免费视频| 亚洲图片欧美午夜| 欧美视频在线观看一区二区| 亚洲美女在线看| 亚洲国产精品日韩| 久久久xxx| 亚洲高清不卡在线| 欧美成人精品h版在线观看| 久久久高清一区二区三区| 激情一区二区| 久久久精品日韩| 国产亚洲午夜| 久久久久www| 久久久久久久久久久久久9999| 99视频在线精品国自产拍免费观看 | 欧美华人在线视频| 亚洲国产精品成人精品| 久久免费视频在线| 国产伦精品一区二区三区| 久久都是精品| 久久久久久精| 久久最新视频| 亚洲精品影院| 亚洲视频电影图片偷拍一区| 国产精品入口夜色视频大尺度| 狠狠久久亚洲欧美专区| 欧美影院视频| 香蕉久久一区二区不卡无毒影院| 欧美/亚洲一区| 日韩视频―中文字幕| 亚洲精品欧美专区| 国产精品久久久久久久久久妞妞| 最新69国产成人精品视频免费| 一区二区三区精密机械公司| 亚洲最新在线| 国产一区二区三区在线观看精品 | 性欧美xxxx视频在线观看| 麻豆精品一区二区综合av | 久久先锋影音av| 欧美综合二区| 亚洲人成绝费网站色www| 亚洲国产成人tv| 国产精品www994| 久久夜色精品国产欧美乱极品| 99视频一区二区| 小黄鸭精品aⅴ导航网站入口| 欧美精品在线视频| 国产精品欧美久久| 久久嫩草精品久久久精品| 欧美国产一区在线| 欧美一区国产在线| 欧美国产日韩一区二区三区| 亚洲欧美日韩直播| 欧美一区二区三区电影在线观看| 国产精品vvv| 久久久噜噜噜久久人人看| 欧美激情在线观看| 久久免费午夜影院| 国产精品免费网站在线观看| 欧美韩日一区二区| 国产一区二区三区高清在线观看| 欧美一级淫片aaaaaaa视频| 久久精品视频导航| 国产婷婷一区二区| 91久久精品一区二区三区| 国产一区二区久久久| 亚洲国产美女精品久久久久∴| 免费国产一区二区| 久久精品国产一区二区电影| 欧美日本三级| 免费欧美视频| 黄色另类av| 欧美怡红院视频| 亚洲欧美日韩精品在线| 欧美日韩麻豆| 亚洲精品国产精品国自产在线 | 欧美在线视频a| 欧美日韩国产另类不卡| 蜜臀av一级做a爰片久久| 国产视频久久| 香港久久久电影| 欧美与黑人午夜性猛交久久久| 久久福利资源站| 亚洲免费一在线| 国产精品vvv| 亚洲欧美激情视频| 久久福利影视| 国产亚洲欧美日韩一区二区| 亚洲中字黄色| 久久久久久九九九九| 国产一区二区观看| 亚洲与欧洲av电影| 国产精品欧美在线| 午夜视频一区| 久久免费精品视频| 亚洲国产成人在线| 欧美激情精品久久久久久大尺度| 亚洲午夜极品| 欧美午夜在线一二页| 夜夜躁日日躁狠狠久久88av| 午夜精品国产更新| 一区二区三区高清在线| 欧美成人在线免费观看| 欧美一区二区日韩一区二区| 亚洲一区观看| 久久精品一本| 欧美日韩精品不卡| 国产噜噜噜噜噜久久久久久久久| 亚洲人成网站在线播| 国产精品入口麻豆原神| 亚洲精一区二区三区| 欧美大片va欧美在线播放| 一区二区在线观看视频| 亚洲免费在线视频一区 二区| 影音先锋中文字幕一区| 久久夜色精品国产欧美乱| 91久久精品国产91久久性色tv| 国产午夜精品一区理论片飘花 | 亚洲电影第1页| 一本久道久久综合婷婷鲸鱼| 欧美日韩免费在线视频| 午夜精品一区二区三区四区| 欧美mv日韩mv国产网站| 亚洲一区观看| 在线电影国产精品| 欧美午夜在线一二页| 欧美中文字幕视频在线观看| 亚洲电影在线播放| 久久高清一区| 在线一区二区三区做爰视频网站| 欧美mv日韩mv国产网站| 亚洲小说欧美另类婷婷| 女生裸体视频一区二区三区 | 免费久久久一本精品久久区| 一区二区三区四区精品| 亚洲免费在线视频| 久久久久女教师免费一区| 一区二区三区福利| 在线欧美小视频| 国产美女精品免费电影| 宅男噜噜噜66国产日韩在线观看| 一区二区毛片| 极品日韩久久| 国产精品嫩草影院av蜜臀| 久久综合给合久久狠狠狠97色69| 欧美一区二区视频观看视频| 在线免费观看日本一区| 国产欧美精品xxxx另类| 欧美人与禽性xxxxx杂性| 久久久久久亚洲精品不卡4k岛国| 久久不射中文字幕| 日韩视频在线一区二区三区| 黄色另类av| 久久福利影视| 亚洲视频第一页| 91久久精品国产91久久性色| 老司机成人网| 久久久九九九九| 亚洲欧美中日韩| 亚洲视屏在线播放| 正在播放欧美视频| 蜜桃av噜噜一区| 欧美在线视频在线播放完整版免费观看| 午夜国产不卡在线观看视频| 欧美国产亚洲另类动漫| 久久久蜜桃一区二区人| 欧美一区二区三区免费大片| 亚洲女女做受ⅹxx高潮| 亚洲少妇一区| 亚洲永久免费| 欧美一区二区三区久久精品茉莉花| 国产午夜亚洲精品理论片色戒 | 国产视频一区在线观看| 欧美日韩国产电影| 欧美精品激情| 欧美日韩国产成人在线| 欧美三级特黄| 国产精品高潮久久| 国产精品日韩一区| 模特精品裸拍一区| 欧美国产成人在线| 欧美日本在线观看| 国产精品xxxav免费视频| 欧美视频二区36p| 国产精品99免费看 | 国产日本欧美一区二区| 国产精品久久国产精品99gif| 久久久久久尹人网香蕉| 亚洲在线观看视频网站| 在线视频精品一| 亚洲一区二区伦理| 性欧美video另类hd性玩具|