Bischoop <bisch...@vimart.net> writes: > Let me clarify what I want to do: > We all know Scrabble game. > there's a file with Dictionary containing word in each line, the idea is > to input some letters for example mentioned earlier: att, the script > supposed to find all words in which letters: 'a','t','t' occur and print > these words. It supposed not to print word: 'auto' because there's only > one 't' but words such as: 'toast', 'toasty', 'tolerant' are meeting the > criteria becase we have in these words one 'a' and two 't' as user has > input.
In Scrabble, you will usually know the order you want for the known letters, so you could just make a regular expression: t.*a.*t In fact, you often know the gaps, so you might even be able to match something more specific like t.a..t instead. If you don't know the order, you can still make a chain of matches. For example, matching for t.*t and then also a. Every distinct letter needs a match, and repeated letters need a single match with .* between them. And since Python REs have (?=...) look ahead syntax you could even make a single pattern like this: (?=.*t.*t)(?=.*a) While there are probably better ways in Python, this is what I'd do on the command line. For example $ grep -P '(?=.*t.*t)(?=.*a)' word-list | wc -l 45677 $ grep 't.*t' word-list | grep a | wc -l 45677 -- Ben. -- https://mail.python.org/mailman/listinfo/python-list