I'd like to exclude tmp and proc, but preserve /data/tmp/*.
However, using the following command:

$tar -X exclude -cvpf - * | wc -l

with this exclude file:

$cat exclude
proc/*
tmp/*

I find that /data/tmp is excluded as well.
How can I include data/tmp whilst excluding tmp?
More importantly, how should I understand tar's wildcard interpretation and exclude pattern matching. Does every pattern in the exclude file behave like a grep?