2017-09-21 3 views
1

私はmSlスクリプティングにはかなり新しいですが、これまでにいくつかのスクリプトを作成しました。パターンマッチングを行う方法を理解しようとしていますが、問題があります。次のテキストがあるとしましょう。mIRC/mSLで証明書の文字列をワイルドカードから取り除く

誰かがジムにコインを裏返して、それが頭だったとしましょう。

コインが頭や尾になってしまったかどうか調べたいと思っています。

on *:text:*flipped a coin * and it was *:#:{echo -a the coin was $3} 

と思われましたが、$演算子が完全なワイルドカードから3番目の単語を取っているようです。私は右のこの例でそれを取得する方法を見つけ出すことができるかもしれませんが、することができますが、我々は、複数のコインで以下の例は、

誰かがデイブにコインを裏返し、それが尾だった、とも コインをいっぱい持っていると言いますジムには頭があった。

私はジムが持っていたコインを見つけたいと思いますが、彼の前後に何人の人がいるかわからないので、ワイルドカードでx番目の単語を見つけることはできません。私は何をしたいのですが、私は基本的に私のワイルドカードを捨てることができ、今私が直接コインフリッパーだった、そしてどのような結果であった誰参照することができ、この(主にsudoのコード)のようなもの

on *:text:$1 * to Jim and it was $2:#:{ 
    echo -a $1 is who flipped it to Jim and it was $2 
} 

です。

ありがとうございました!

編集:

は、私は正規表現でコイン結果を見つける見つけることができるんだけど、私はmIRCの中で結果を引き出すするかどうかはわかりません。私はhereを使用して正規表現のパターンを参照してください。私はmircと$ regmlでも$ regexを使ってみましたが、正しく動作しません。私は現在、私のスクリプトに次のようにあります

on $*:text:/Jim and it was (\b\w{5}\b)/iS:#:{ 
echo -a $regex(currCoin, $1-,Jim and it was (\b\w{5}\b)) 
echo -a $regml(currCoin,0) 
echo -a $regml(currCoin,1) 
} 

私は$の正規表現は、本質的にcurrCoinに私の正規表現のグループを救う、その後、$ regmlは一種の$ Nのように、N番目のグループの値を表示するだろうと思っ表示されるでしょう正規表現のN番目のグループ値。私は明らかに何かを理解するのが間違っている。

+0

テキストが常に変更される場合は、検索に一致することは非常に不可能です。静的なテキストがある場合、正規表現を使用する必要があります。 – Denny

+0

私は望む文字列を検出して正規表現のグループに保存することができますが、[http://regexr.com/3gqgi](http://regexr.com/3gqgi)私は$ regexと$ regmlを使いたいと思うように文字列を引っ張り出します。私が正規表現の出力から0番目または1番目のグループを見ようとすると、 "1"と表示されて1つの結果が見つかりました。私は何が間違っているのか分からないが、それは何かを知っている。ありがとう! – gerrgheiser

答えて

1

正規表現の代わりにトークン識別子を使用できます。私は少なくとも10年間は​​mslを使用していないので、私に同行してください。

on *:text:*to Jim and it was*:#:{ 
    var %jimpos = $findtok($1-,Jim,1,32) 
    var %coinpos = %jimpos + 4 
    var %result = $gettok($1-,%coinpos,32) 
    msg $chan $remove(%result,.) 
} 

多少短縮したり、同じ行にさらに多くの操作を加えることができますが、これは少なくとも読み取り可能です。

+0

これはずっと前のことですが、依然として非常に役に立ちます。本当にありがとう!! – gerrgheiser

関連する問題