Well, another method that would work, but would put a bit of a load on your cpu would be to check the words one-by-one.

Code:
on *:text:*:#: {
  [color:green]; Only run if the first "word" includes 3+ tokens using .'s as separators.[/color]
  if ($gettok($1,0,44) > 3) {
    [color:green]; This variable tracks the number of tokens we're checking.[/color]
    var %count = 0
    [color:green]; Keep checking until there is only one match.[/color]
    while (%results != 1) {
      [color:green]; If there are no matches, say so and exit.[/color]
      if (%results == 0) { echo -a No match. | return }
      inc %count
      [color:green]; If there isn't only 1 match after we finish checking all the tokens in the first word, return the error message and end.[/color]
      if (%count > $gettok($1,0,44)) { echo -a No match. | return }
      [color:green]; Reset the results.[/color]
      var %results = 0
      [color:green]; This variable tracks the line numbers in your text file.[/color]
      var %count2 = 1
      [color:green]; Repeat until all lines are checked, or until the Break command is reached (see inside the while loop).[/color]
      while (%count <= $lines(match.txt)) {
        [color:green]; If there is a match, increase the results variable.[/color]
        if ($gettok($1,%count,44) == $gettok($read(match.txt,%count2),%count,44)) { inc %results }
        [color:green]; If there is more than one match, break out of the loop.  This avoids checking the entire file when we already know we have more than one match.[/color]
        if (%results > 1) { break }
        inc %count2
      }
    }
    [color:green]; Output the results once we only have a single match.[/color]
    msg $chan $read(match.txt,w,$gettok($1,%count,44) $+ *)
  }
}


Ok, again, I didn't test this. But, I am pretty sure it is correct. Keep in mind that it WILL be a resource hog if the text file has many lines. I've done what I could to limit how much CPU usage it will take up, but it's not a great method of doing this.

How this works:

<user> David.Letterman.10.11.2006

This will first search for David in the match.txt file. If there is only one line with David on it, it will output the results. Keep in mind that this may result in an incorrect output if you have some other David in your file and David.Letterman isn't in there. If there is more than one line with David, then it will search for David.Letterman in the file. Again, if there is only one result, that result will be displayed. If there is more than one line with David.Letterman on it, then it will do a search for David.Letterman.10 in the file. It will repeat this until there is either only 1 match or you run out of tokens in $1.

As long as your match.txt file includes all titles that you would want to search for, this should work. But, as I said in italics above, if you didn't have a David.Letterman line, but had some other David line, the wrong information would be displayed.

Reminder: This is not the best method as it uses the CPU more than you'd really want (assuming you have a lot of lines in the match.txt file). But, it should work until you have a better solution.