///////////////////////////////////////////////////////////////////////////////////////////////////// //这儿的题怎么都这么错综复杂,你敢信,这题可以有很多[],多损啊 //////////////////////////////////////////////////////////////////////////////////////////////////// #include <iostream> #include <cstdio> #include <string> // #include <algorithm> using namespace std; int main() { int x; while(cin>>x) { string pattern[x]; string text; for(int i=0; i<x; ++i) { cin>>pattern[i]; } cin>>text; string str; int j=0; int q=0; int m;//[下标 int n;//]下标 while(j<text.size()) { if(text[j]=='[') { m=j; j++; while(text[j]!=']') //出来的时候,j就是】的下标 { str[q]=text[j]; ++q;//q是方括号里面的数量 ++j; } n=j; break; } ++j; } for(int i=0; i<n; ++i) { int k = 0; int p = 0; for(int y=0; y<str.size(); ++y) { if((pattern[i][m]-str[y]!=0)&&(pattern[i][m]-str[y]!=32)&&(pattern[i][m]-str[y]!=-32)) { break; } } while(k<pattern[i].size()) { if(k<m||k>m) { if((pattern[i][k]-text[p]==0)||(pattern[i][k]-text[p]==32)||(pattern[i][k]-text[p]==-32)) { ++k; ++p; } else { break; } } else if(k==m) { p=n+1; ++k; } } if(p==text.size()){ cout<<i+1<<' '<<pattern[i]<<endl; } } } }