0

この文字列が期待されると仮定します:100:~#または100:~/tmp

これは、実際には、マシンのターミナルプロンプトと一致させる必要があることを意味します(パスが含まれる場合と含まれない場合があります)。通常、この正規表現パターンでは、次のようになります。

100:(~|/)(/+[a-zA-Z0-9]*)*#

これは、次のような入力文字列に対して機能します。100:~/foo/bar/foo/baz#

ここでテストできます:Regex Pal

しかし、TCLでExpectを使用して、-reそのようなパターンに一致するように追加する必要があります。しかし、私はそうすることを許されていません。上記のパターンを正規表現なしで試しましたが、失敗しました。

100:~#マッチングまたは100:~/tmp非常に単純な現在のパターン: 100:[~/]*#、そしてそれは正規表現ではなく、文字列をマッチングするためのシェル式であると言われました。このパターンは、 (およびはオプション)と。100:[~/]*#の間のすべてに一致することを意味します。従来の正規表現の意味でゼロ以上である通常の文字とは対照的に、文字は何にでも一致するように意図されています。100:[~/]~/#**

Expect withou-reフラグのパターンマッチング式とは正確には何ですか?

4

1 に答える 1

4

それらは「グロブ」パターンとして知られています。それらは、シェルのパターンマッチングの後にスタイル設定されます。ドキュメントはここにあります:http://tcl.tk/man/tcl8.5/TclCmd/string.htm#M40

* null文字列を含む、文字列内の任意の文字シーケンスに一致します。

文字列内の任意の1文字に一致します。

[ chars ] chars で指定されたセット内の任意の文字に一致します。xy形式のシーケンスがcharsに含まれている場合、 xyの間の任意の文字が一致します。と一緒に使用すると-nocase、範囲の終点が最初に小文字に変換されます。大文字{[A-z]}と小文字を区別して一致する場合は「<code>_」と一致しますが(「<code>_」は「<code>Z」と「<code>a」の間にあるため)、-nocaseこれは{ [A-Za-z]}(およびおそらくそもそも意味がありました)。

\ x 単一の文字xに一致しますこれは、パターン*?[]\内の文字の特別な解釈を回避する方法を提供します。

于 2012-06-11T12:48:45.680 に答える