MathGroup Archive 2005

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: refering to a long pattern by a variable

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]]

{bc, bac, bzzc}

David Park
djmp at

From: marloo3 at [mailto:marloo3 at]
To: mathgroup at

i wish if i could refer to a long pattren by just a variable,
suppose the:
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 :
and some procedure will make the "b" ~~ ___ ~~ "c" from the above pat
and assign this pattern to pat2 variable so we just write:
ShortestMatch[pat2], Overlaps -> False]
to give the output
Out[]={bc, bac, bzzc}
i have tried it by StringJoin but it does not work.

  • Prev by Date: Re: Finding Position in an ordered list
  • Next by Date: Re: Re: simple set operations
  • Previous by thread: Re: refering to a long pattern by a variable
  • Next by thread: Re: refering to a long pattern by a variable