Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- bool pattern_match( const char *str, const char *pattern )
- {
- while( *pattern )
- {
- bool any = false;
- if( *pattern == '*' )
- {
- any = true;
- while( *pattern == '*' )
- {
- ++pattern;
- if( *pattern == '?' )
- {
- char const * p = pattern;
- char const * s = str;
- while( *p == '?' )
- {
- if( ! *s )
- return false;
- ++p;
- ++s;
- }
- if( *p == '*' )
- {
- str = s;
- pattern = p;
- }
- }
- }
- }
- if( ! *pattern )
- return ! *str || any;
- if( ! *str )
- return false;
- while( *str )
- {
- bool good = true;
- const char * st = str;
- const char * p = pattern;
- while( *st && *p && *p != '*' )
- {
- if( ! ( *p == '?' || *p == *st ) )
- {
- good = false;
- break;
- }
- ++p;
- ++st;
- }
- if( good && ! *p)
- good = ! *st;
- if( good )
- {
- str = st;
- pattern = p;
- break;
- }
- else
- {
- if( any )
- ++str;
- else
- return false;
- }
- }
- }
- return ! *str;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement