Question

I'm having a problem trying to understand how does AIML pattern matching works. What's the difference between _ and *? And how I should use them to get the best match?

I have this document only, but it lacks some good examples.

Was it helpful?

Solution

A * will match anything unless a pattern of a word or several words are matched

A _ will match anything even if a pattern of a word or several words could match

<pattern>BYE _</pattern> does not make sense since <pattern>BYE *</pattern> matches the same patterns but <pattern>BYE _</pattern> will shadow <pattern>BYE * SEE YOU</pattern> whereas BYE * won't.

Use _ carefully, for example _ would match anything and your bot will give the same answer every times.

<pattern>_ A COUPLE OF WORDS *</pattern> and <pattern>_ A COUPLE OF WORDS</pattern> is the proper way to use _ if you want to catch every times A COUPLE OF WORDS is inside or at the end of a sentence.

OTHER TIPS

_ and * are both wildcards, the difference is where they should be used in pattern matching.

_ should be used before the word or phrase you're matching on
* should be used after the word or phrase you're matching on.

See: AIML spec

To understand this better it may be worth looking at examples in the existing AIML bots.

See: Downloads, this one Saluations.aiml has examples

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top