Go and look at the PatternCount ( ) function.
And to steal an idea of Raybaudi's from another post, you might try this to get a list of body parts extracted from the "free text":
Let ( [ T = YourTable::YourTextField ;
TheList = Substitute ( Filter ( Lower ( T ) ; " abcdefghijklmnopqrstuvwxyz" ) ; " " ; ¶ ) // makes a return separated list of words in lower case
FilterValues ( TheList ; List ( "wrist" ; "hand" ; "arm" ; //list all the body parts you want here ) )
The resulting list has each value separated by return--which can be useful, but you can use a second substitute function call to turn the ¶'s into commas with spaces or other characters if such is desirable.