私の状況は、「 /i」の再手遺伝子属性を使用するのに適切な場所でしょうか?
-
12-10-2019 - |
質問
私は、VMwareの特定のバージョンでサポートできるすべての可能なOS名の大きなカタログを作成しています。もともと私は彼らがVMXファイルに立っていたのでそれらすべてを書いていましたが、それらがすべてリストされているウェブサイトを見つけました、問題は彼らが「完璧な」マッチを提供するために適切にケースではないことです、これはこれを使用するのに最適な時期でしょうか症例の不感のための正規表現属性?
また、サイドの質問として、それはおそらくウェブサイトからOSSのリストを抽出するでしょうか?彼らはHTMLフォーミングされたチャートにいるようです。それらをすべて入力する必要があるのは、私に大幅に節約されるでしょう。
私はHTML :: Table Extractを見ましたが、それをどのように使用するかはよくわかりません。テーブルに関する限り、Webサイトコードでセクションを見つけることができ、新しいHTMLファイルにコピーして、デスクトップに載せることができます。
これは奇妙です、私はおそらく何かが欠けているでしょう。しかし、私は症例の不感と一致することはできません。 /xmiで正規表現を終えると、この出力が得られます。
Use of uninitialized value $guest_os in concatenation (.) or string at discovery4.pl line 146
.
私が発見したことは、私が印刷しようとしているスカラーに関連付けることに一致しないことを意味します。
とにかく私はそれが問題を抱えていることを知っています。 winnetstandard
に winNetStandard
それは機能し、言う、;Windows Server 2003, Standard Edition
. 。それが言うべきことです。
解決
HTML :: TableExtr 役立つことがあります。マッチングに関する限り、あなたが一致させようとしていることが何であるかはわかりません。 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名のみに対するケースの無感覚の範囲を制限します。あなたがゲストロをケースに鈍感にしたい場合にのみ、あなたは使用しますか /i
(と (?:$osnames)
).
他のヒント
これは、使用するのに適切な時期です /i
属性、ケースを変更すると何も害を及ぼすことはありません。オペレーティングシステムのリストを取得するために私がすることは、リストがあるセクションのHTMLをコピーし、リストの正規表現を使用して、必要な形式で出力し、出力テキストを使用することです。