2011-01-09 11 views
0

私のIRCボットでは、ホストマスクとワイルドカードを使った別のホストマスクをマッチングさせる必要があります。IRCホストマスクマッチング

例:

[email protected]は一致している必要があります:[email protected]??blo.users

をquestionmarkがすべての文字と番号を意味します。

それが可能だ場合、それは、以下の文字列に一致見ていいだろう!

[email protected]はパブロパブロ@ PABと一致するには*

!と@は常にホストマスクにあります。

誰かがこのタスクの正規表現を作成できますか?

私は試してみましたが、成功しましたが、コードは巨大で、しばしば不正確です。

ありがとうございます!

+0

「巨大な」と言うとき、何が100行ですか? 5,000?それが100行以下であれば、テストケースとともにあなたの質問に投稿するといいでしょう。 –

答えて

0

私が作成したPHPIRCdのためにこれを書いています。

function match($mask, $expression) { 
    $expression = str_replace('\\*', '.+', preg_quote($expression, '/')); 
    return preg_match('/^' . $expression. '$/', $mask); 
} 

match('[email protected]', 'Pab*o!*@*blo')のように指定できます。これはまさにあなたが探しているものではないかもしれませんが、あなたが正しい道をあなたに送ってくれることを願っています。

+0

Perlソリューションが必要な場合は、['IRC :: Utils'](http://search.cpan.org/perldoc?IRC::Utils#matches_mask)モジュールの' matches_mask() 'を使うことができます。 – Hinrik