Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C++ > Finding string with "wild" characters in another string

Reply
Thread Tools

Finding string with "wild" characters in another string

 
 
Paweł
Guest
Posts: n/a
 
      07-09-2004
Hello!

I'm looking for efficient code or site where I can find code for finding one
string in another string. String which I search should have "wild"
characters like '?' for any one char and '*' for any string of characters.

I'm looking for way to effective getting string from text file and then
searching it like I write above.

Thanks in advance for any helps, notices or sites

--

Best regards
Paweł Chmielarz
----------------------------------
http://www.velocityreviews.com/forums/(E-Mail Removed)


 
Reply With Quote
 
 
 
 
John Harrison
Guest
Posts: n/a
 
      07-09-2004

"Paweł" <(E-Mail Removed)> wrote in message
news:cclos8$fb8$(E-Mail Removed)...
> Hello!
>
> I'm looking for efficient code or site where I can find code for finding

one
> string in another string. String which I search should have "wild"
> characters like '?' for any one char and '*' for any string of characters.
>
> I'm looking for way to effective getting string from text file and then
> searching it like I write above.
>
> Thanks in advance for any helps, notices or sites
>



http://www.boost.org/libs/regex/doc/index.html

john


 
Reply With Quote
 
 
 
 
Roman Ziak
Guest
Posts: n/a
 
      07-09-2004
"Paweł" <(E-Mail Removed)> wrote in message
news:cclos8$fb8$(E-Mail Removed)...
> Hello!
>
> I'm looking for efficient code or site where I can find code for finding

one
> string in another string. String which I search should have "wild"
> characters like '?' for any one char and '*' for any string of characters.
>
> I'm looking for way to effective getting string from text file and then
> searching it like I write above.
>
> Thanks in advance for any helps, notices or sites


Hope this helps. I pulled it out of the project with some custom types
(e.g. char*) and changed them here to built-in types, but apologize if
it won't compile as is. The algorithm has been tested and is in production.
Unfortunately you will not get the found matched substrings as with
regular expressions, but is quite fast.

int wildMatch(char *wild, char *text)
{
enum { UNSYNC,SYNC,START };
char *lastwild, *lasttext; /* last synced position in CMP mode */
unsigned state, size; /* SEARCH mode(0), CMP mode otherwise */

for(state=START; ; )
{
if(*wild == 0) { /* is end of wildargs ? */
if(state!=UNSYNC && *text==0) /* is there text in synced mode?
*/
return 0;
if(state == START) /* there was no asterisk at all */
return -1;
/* compiler gives warning: possible use before definition */
size = wild-lastwild; /* size of the string */
return strcmp(lastwild, lasttext+strlen(lasttext)-size);
}

if(*text == 0) { /* is end of text ? */
while(*wild=='*') wild++; /* skip all asterisks */
return *wild==0 ? 0 : 1; /* wild is at the end - success */
}

if(state != UNSYNC)
{
/* sync is when texts are synchronized */
if(*wild == '*') {
while(*wild=='*') wild++;/* skip all consequent asterisks */
lastwild = wild; /* remember last positions */
lasttext = text;
state = UNSYNC; /* unsynchronize */
} else
if(*wild == *text || *wild == '?') {
wild++; /* they are same, move to nexts */
text++;
} else {
if(state == START) /* they don't match (no wildcard) */
return *wild-*text;
wild = lastwild; /* not equal chars in CMP mode */
text = ++lasttext; /* go back to last good */
state = UNSYNC; /* unsynchronize */
}
}
else
{
/* non-sync is looking first match */
if(*wild == *text) {
lasttext = text; /* remember last good position */
state = SYNC; /* synchronized again */
} else
text++;
}
}
}


 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Finding a bit string in another bitstring jacob navia C Programming 9 11-02-2009 07:01 PM
Finding a text string on another page and jumping to it like an anchor dangonzale@gmail.com Javascript 2 07-21-2006 10:31 PM
finding out if a string contains characters Merlin Javascript 2 10-30-2005 11:42 AM
Finding string with "wild" characters in another string Paweł C Programming 9 07-13-2004 03:23 PM
Interrogating string for number of characters, response.writing identical number of characters on new line Ken Fine ASP General 2 02-05-2004 03:40 AM



Advertisments