C語言 Regex 尋找字串匹配

來源:互聯網
上載者:User
/*題目1)簡介輸入:Regex字串 待匹配字串,如果輸入”### ###”程式終止,輸出:如匹配成功,輸出整個字串,如果匹配不成功,輸出lost,然後等待下一次使用者的輸入。^ 代表字串開始. 代表任一字元$ 代表字串末尾2)參考輸入,輸出^a.$ abc ←regular express and target string (separate by space),inputlost ←result, outputab.$ ababc ←regular express and target string (separate by space), inputababc ←match successfully, print the target string, output### ### ←input ### ### 結束整個程式*/#include <stdio.h>#include <string.h>#define X 20int main(){    int i,j,x1,x2,u,flag,ret,w;    char str1[X],str2[X];    for(u=0;;u++)    {        scanf("%s",str1);        scanf("%s",str2);        x1=strlen(str1);        x2=strlen(str2);        flag=0;        if(x1==3&&x2==3)        {            for(i=0;i<3;i++)            {                if(str1[i]!='#'||str2[i]!='#')                    flag++;            }            if(flag==0)                return 0;        }        if(str1[0]=='^')/*1&2*/        {            if(str1[x1-1]=='$')            {                if(x1==x2+2)                    for(i=1;i<x1-1;i++)                    {                        if(str1[i]!='.')                        {                            if(str1[i]!=str2[i-1])                            {                                printf("lost\n");                                break;                            }                            else                            {                                if(i==x1-2)                                {                                    puts(str2);                                    break;                                }                            }                        }                        else                            continue;                    }                else                    printf("lost\n");            }            else/*2*/            {                if(x2<x1-1)                    printf("lost\n");                else                    for(i=1;i<x1;i++)                    {                        if(str1[i]!='.')                        {                            if(str1[i]!=str2[i-1])                            {                                printf("lost\n");                                break;                            }                            else                                if(i==x1-1)                                {                                    puts(str2);                                    break;                                }                        }                        else                            continue;                    }            }        }        else/*3&4*/        {            if(str1[x1-1]=='$')/*3*/            {                if(x2<x1-1)                    printf("lost\n");                else                {                    for(i=x1-2;i>=0;i--)                    {                        if(str1[i]!='.')                        {                            if(str1[i]!=str2[x2-x1+i+1])                            {                                printf("lost\n");                                break;                            }                            else                            {                                if(i==0)                                {                                    puts(str2);                                    break;                                }                            }                        }                    }                }            }                        else/*4*/            {                ret = 0;                if(x1>x2)                    printf("lost\n");                else                {                    for(w=0;w<x1;w++)                        if(str1[w]!=0)                            break;                        for(j=w;j<x2;j++)                        {                            if(str1[w]==str2[j])                                for(i=1;i<x1-w;i++)                                {                                    if(str1[i+w]!='.')                                    {                                        if(str1[i+w]!=str2[i+j])                                            break;                                        else                                        {                                            if(i+w==x1-1)                                            {                                                ret=1;                                                puts(str2);                                            }                                        }                                    }                                }                                if(ret==1)                                    break;                        }                        if(ret!=1)                            printf("lost\n");                }            }        }    }    return 0;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.