2012-03-28 11 views
1

私は現在、成功した前に3回以上失敗したpingがあるかどうかを調べるために書いた別のスクリプトのログをチェックするスクリプトを書いています。ただ現時点ではベアボーンが、それは読んしようとしている今、このregexとfile readline autohotley

fileread,x,C:\Users\Michael\Desktop\ping.txt 
result:=RegExMatch(%x% ,failure success) 
msgbox,,, The file is = %x% `n the result is = %result% 

ファイルのようになります

success failure success 

であり、それは、ファイルを読み込む際に何らかの理由でそれが変数と述べています%x% 'には不正な文字が含まれています

  • 私はコピーしてスクリプトにping.txtの内容を貼り付けると、変数として保存するとき、それは私がファイルiが割り当てられているWindowsの改行コードCR + LF
  • を持っていることを確認してきた
  • の作品したがって任意の末尾または先頭の空白文字
  • ファイルをリッピング別の変数として読み取るファイル内に生成された変数は、ANSIでエンコードし、まだ

答えて

2

関数のパラメータは、単に、%記号なしで変数名を取るUTF8に問題を持っていTを取り除く裾。

また、2番目のパラメータが正規表現を含む変数の代わりに
の正規表現である場合は、その周りに引用符が必要であることを指摘します。
あなたのスクリプトは、常に1
を返すパターンとして空の文字列を渡します(失敗はそれに関連付けられた空の文字列を持つ変数として解釈されます)。

「空の文字列、正規表現パターンとしてコンパイルした場合、あなたはそれに一致するようにしようとするものは何でもの位置に正確に ゼロの文字にマッチします、それを のこの方法を考える::。任意の位置nについてLexikosを引用する
どんな文字列でも、次の0文字は は常に同じです。 "

あなたは単に真実のテスト、
または私はAutoHotkeyを、このために便利な速記演算子を持っていることを指摘したいのインデックスを見つけることですので。

string := "this is a test" 

f1:: 
result := RegExMatch(string, "\sis") 
traytip,, %result% 
Return 

f2:: 
result := string ~= "\sis" 
traytip,, % result 
Return 

これらのホットキーはどちらも同じことを行います。第二は、速記のオペレータ~=
を使用して、表現を開始%とコマンドパラメータを起動すると第二の例ではtraytipパラメータが一つだけ%

を持っている様子がわかり、
と式の中の変数はありません%で囲まれています。

三項演算子?:も非常に便利です。

string := "this is a test" 
f3::traytip,, % (result := string ~= "\sis") ? (result) : ("nothing") 

それは複雑に見えるかもしれませんが、それは非常に簡単です。その後、(a)は、他の?
場合のように、その後のように他の
:
(真)の場合
%
だと思う(B)
%(真)? (a):(b)

変数は0(または何も)が割り当てられていない場合はFalseと評価されます。
しかし、この例では "\ sis"が一致し、スペースのインデックスが返されます( )ので、Trueと評価されます。

あなたはここで、変数と演算子についての詳細を読むことができます:
http://l.autohotkey.net/docs/Variables.htm

+0

おかげで、それはhamsolo474問題ありません@完璧 – hamsolo474

+1

を働いた男。私はいくつかの重要な情報で私の答えを更新しました。一見してください。 –

+1

"var〜= pattern"は "regexmatch(var、pattern)"と同じですか?面白いことに、他の秘密の演算子が〜=そうであれば私のリストにリンクすることができます – hamsolo474