Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I want to perform a simple analysis of some Greek text: collect the different words used and count their frequency. It seems that some of the built-in commands do not work well with Greek letters. For instance, with

words = StringCases["α β1 rpr other", WordCharacter ..]

the output is

{"1", "rpr", "other"}

How do I get Mathematica to recognize other kinds of words?

share|improve this question
FWIW, you might consider something like StringCases["α β1 rpr0 other", RegularExpression["(\\w|[\[CapitalAlpha]-ω])+"]]. A bit cumbersome, but there ya go... with the caveat that this can't handle characters with tonos; you'll have to modify the regex as needed. – J. M. Apr 26 '13 at 11:26
It'd good to be aware of this: – Szabolcs Apr 26 '13 at 14:43
up vote 4 down vote accepted

I have partial success in splitting Greek text:

greek = ExampleData[{"Text", "HomerOdysseyGreek"}]
Style[StringTake[greek, 100], FontFamily -> "Times"]
Style[StringSplit[StringTake[greek, 100], " "], FontFamily -> "Times"]


share|improve this answer
StringSplit is essentially all I need, and it works great. It correctly identifies words in the Greek. – GregH Apr 26 '13 at 12:18

I'd say this is either a programming or a documentation bug.

The documentation for WordCharacter says:

WordCharacter matches any character for which either LetterQ or DigitQ yields True. »

Well, WordCharacter clearly doesn't consider alpha a letter:

StringMatchQ["α", WordCharacter]


but LetterQ does:



A workaround:

theGreeks=Alternatives@@Select[CharacterRange["\[CapitalAlpha]", "\[Omega]"], LetterQ];

StringCases["α β1 rpr other", (WordCharacter | theGreeks) ..]

{"α", "β1", "rpr", "other"}

You may want to enlarge the set of characters included in "theGreeks". Now only, the basic Greek characters are in there.

share|improve this answer
FWIW, both StringMatchQ["α", RegularExpression["[[:word:]]"]] and StringMatchQ["α", RegularExpression["\\w"]] also return False. – J. M. Apr 26 '13 at 11:19

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.