Re: When a string does not match itself
- To: mathgroup at smc.vnet.net
- Subject: [mg97228] Re: When a string does not match itself
- From: Szabolcs <szhorvat at gmail.com>
- Date: Sun, 8 Mar 2009 05:54:36 -0500 (EST)
- References: <got8h2$go0$1@smc.vnet.net>
On Mar 7, 9:42 am, <ingolf.d... at telia.com> wrote:
> This is a maybe a trivial question, but I have not found the explanation =
in
> help (I am using Mathematica 7.0.0):
>
> Normally a string matches itself:
>
> In[270]:= StringMatchQ["monkey", "monkey"]
>
> Out[270]= True
>
> But
>
> In[271]:= StringMatchQ["\\*", "\\*"]
>
> Out[271]= False
>
> Why?
Yes, this is a bit tricky. In a pattern, * stands for "any sequence
of characters". So we need a way to construct a pattern that only
matches the * character. This is done by escaping, i.e. preceding the
* by a backslash. To make things more complicated, we also need to
escape the backslash to include it into a Mathematica string.
So the patter "\\*" is just an escaped *, i.e. it matches a "*", and
"*" only. To match "\\*", we need to use "\\\\*".
In[3]:= StringMatchQ["\\*", "\\\\*"]
Out[3]= True
Escaping can get ugly.
> Compare also to
>
> In[4]:= StringCases["\\*", "\\*"]
>
> Out[4]= {"\\*"}
>
> In[267]:= StringPosition["\\*", "\\*"]
>
> Out[267]= {{1, 2}}
>
> Best regards
>
> Ingolf Dahl
>
> Sweden
>
> ingolf.d... at telia.com