Re: refering to a long pattern by a variable
- To: mathgroup at smc.vnet.net
- Subject: [mg57733] Re: [mg57713] refering to a long pattern by a variable
- From: "David Park" <djmp at earthlink.net>
- Date: Tue, 7 Jun 2005 02:03:34 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
What about...
txt = "abcbacabzzcz";
pat2char[twochar_String] /; StringLength[twochar] == 2 :=
With[{chars = Characters[twochar]},
First[chars] ~~ ___ ~~ Last[chars]]
StringCases[txt, ShortestMatch[pat2char["bc"]], Overlaps -> False]
{bc, bac, bzzc}
Or simplify things even more...
stringmatches[twochar_String /; StringLength[twochar] == 2][txt_] :=
With[{chars = Characters[twochar]},
StringCases[txt, ShortestMatch[First[chars] ~~ ___ ~~ Last[chars]],
Overlaps -> False]]
stringmatches["bc"][txt]
{bc, bac, bzzc}
David Park
djmp at earthlink.net
http://home.earthlink.net/~djmp/
From: marloo3 at mail15.com [mailto:marloo3 at mail15.com]
To: mathgroup at smc.vnet.net
hello
i wish if i could refer to a long pattren by just a variable,
suppose the:
txt="abcbacabzzcz";
and the pattern to search is "b"~~___~~"c"
StringCases[txt, ShortestMatch["b" ~~ ___ ~~ "c"], Overlaps -> False]
Out[]={bc, bac, bzzc}
ok, i hope there is a way to supply just the :
pat=Characters["bc"];
and some procedure will make the "b" ~~ ___ ~~ "c" from the above pat
variable
and assign this pattern to pat2 variable so we just write:
StringCases[txt,
ShortestMatch[pat2], Overlaps -> False]
to give the output
Out[]={bc, bac, bzzc}
i have tried it by StringJoin but it does not work.
thanks