/*題目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;}