MathGroup Archive 2009

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

Search the Archive

Re: Finding the Position of Elements in a List that Contain

  • To: mathgroup at smc.vnet.net
  • Subject: [mg102189] Re: [mg102157] Finding the Position of Elements in a List that Contain
  • From: Jaebum Jung <jaebum at wolfram.com>
  • Date: Sat, 1 Aug 2009 03:57:18 -0400 (EDT)
  • References: <200907310953.FAA19267@smc.vnet.net>

You can use WordBoundary to search a word.

In[417]:= 
StringCases[listOfStrings,__~~WordBoundary~~searchString~~WordBoundary~~___]
Out[417]= {{The cat is here.},{},{},{Where is the cat?}}

For Position, try the following:

Position[listOfStrings,
 x_ /; ! StringFreeQ[
    x, __ ~~ WordBoundary ~~ searchString ~~ WordBoundary ~~ ___],
 Heads -> False]

- Jaebum




Gregory Lypny wrote:
> Hello everyone,
>
> Suppose I have a list of strings, say, sentences such as
>
> 	listOfStrings = {"The cat is here.", "It's not here.",  "Not in the  
> catalogue,", "Where is the cat?"}
>
> and a string I want to search for
>
> 	searchString = "cat"
>
> I can use StringCases to pick off the elements that contain the search  
> string
>
> 	StringCases[listOfStrings, __ ~~ searchString ~~ ___]
>
> 	{{"The cat is here."}, {}, {"Not in the catalogue,"}, {"Where is the  
> cat?"}}
>
> But what if I just want to know the positions of the elements that are  
> hits?  In this case, it's
>
> 	{1, 3, 4}
>
> If I use
>
> 	Position[listOfStrings, ___ ~~ theString ~~ ___]
>
> I get
>
> 	{}
>
> which is not what I expect.  Also how can I have my searchString  
> treated like it is a word so that 3 is not one of the hits?
>
> Any hints would be much appreciated.
>
> 	Gregory
>
>   



  • Prev by Date: Re: Finding the Position of Elements in a List that Contain a Substring
  • Next by Date: Re: Help with concatenating a list with &&
  • Previous by thread: Re: Finding the Position of Elements in a List that Contain
  • Next by thread: Re: Finding the Position of Elements in a List that Contain