0

VMWare の特定のバージョンでサポートできるすべての可能な OS 名の大きなカタログを作成しています。もともと私は VMX ファイルにあるようにすべてを書いていましたが、それらすべてがリストされている Web サイトを見つけました。問題は、「完全な」一致を提供するために適切にケース化されていないことです。大文字と小文字を区別しないための正規表現属性?

また、副次的な質問として、Web サイトから OS のリストを抽出することは可能でしょうか? それらは HTML 形式のチャートにあるように見えます。それらをすべて入力する必要があるため、多くの時間を節約できます。

HTML::Table extract を見ましたが、使い方がよくわかりません。表に関する限り、ウェブサイトのコードでセクションを見つけることができ、新しい html ファイルにコピーしてデスクトップに配置できるようにしました。

これは奇妙です。おそらく何かが欠けています。しかし、大文字と小文字を区別しないと一致させることはできません。/xmi で正規表現を終了すると、次の出力が得られます。

Use of uninitialized value $guest_os in concatenation (.) or string at discovery4.pl line 146.

私が発見したことは、印刷しようとしているスカラーに関連付ける一致がないことを意味します。

とにかく、私はそれを変更winnetstandardするwinNetStandardと動作し、言う ので、大文字と小文字を区別したくないという問題があることを知っています。Windows Server 2003, Standard Edition. それが言うべきことです。

4

2 に答える 2

2

HTML::TableExtractが役に立ちます。マッチングに関する限り、何をマッチングしようとしているのかわかりません。2 つの名前を比較するだけの場合は、uc($foo) eq uc($bar)より理にかなっています。ただし、正規表現があり、一致全体で大文字と小文字を区別しないようにしたい場合は、/iそうします。

サポートされている OS 名を取得し、それらを正規表現にアセンブルして、それを使用して照合しますか? 次に、@osnames を指定すると、次のようなものが必要になる場合があります。

my $osnames = join('|', map quotemeta, sort { length($b) <=> length($a) } @osnames);
my $regex = qr/guestOS\s*=\s*"(?i:$osnames)"/;

?i:、大文字と小文字を区別しない範囲を OS 名のみに制限します。ゲスト OS で大文字と小文字を区別しないようにする場合にのみ/i(および(?:$osnames)) を使用します。

于 2011-01-18T03:47:37.693 に答える
0

/i大文字と小文字を変更しても実際には何も害がないため、この時点でこの属性を使用するのが適切です。オペレーティング システムのリストを取得するには、リストがあるセクションの html をコピーし、リストで正規表現を使用して必要な形式で出力し、出力されたテキストを使用します。

于 2011-01-18T03:47:15.437 に答える