The challenge with special characters is that they are not a normal part of conversation and people are pretty relaxed in how they use them.
In general, characters other than the sentence terminators (period, question mark, exclamation mark) are treated as a word separators and they are parsed to their own individual word. There are exceptions to that of course, for example a percentage symbol after a number, well known currency symbols, hyphenated words.
Often people see some symbols as interchangeable, .e.g. forward and backward slash.
Other times people might not supply them because they cannot remember how something is formatted, e.g. should that contract reference be partitioned by a slash or a hyphen?
Also note that some symbols are shorthand for words, so standalone “&” is expanded to “and” and “@” to “at”.
So I would recommend to be try and be relaxed over special characters if you want to have the greatest success of matching against a wide variety of user input. The system will create several variations of synonyms with and without punctuation to try and be as inclusive as possible.