Würde meine Situation ein geeigneter Ort sein, die verwenden ‚/ i‘ REGEX Attribut?

StackOverflow https://stackoverflow.com/questions/4720248

  •  12-10-2019
  •  | 
  •  

Frage

Ich mache einen großen Katalog von allen möglichen OS-Namen, die durch meine besondere Version von VMWare unterstützt werden können. Ursprünglich war ich sie alle zu schreiben, wie sie in den VMX-Dateien standen aber dann fand ich eine Website, die sie alle aufgelistet hatte, das Problem ist, sie sind nicht richtig ein „perfektes“ Spiel zu bieten verrohrt, wäre dies die perfekte Zeit, um das zu verwenden, regex Attribut für Groß- und Kleinschreibung?

Auch als Neben Frage, wäre es möglicherweise die Liste der Betriebssysteme von der Website extrahieren werden ?. Sie sehen in einer HTML-formatierte Diagramm sein. Es würde mir eine Menge Zeit sparen, die sie alle heraus zu geben.

Ich schaute auf HTML :: Table-Extrakt, und ich verstehe wirklich nicht, wie es zu benutzen. Was die Tabelle betrifft ich in der Lage war, den Abschnitt in dem Webseiten-Code zu finden und ich auf eine neue HTML-Datei kopiert, damit ich es auf meinem Schreibtisch habe.

Dieses ungerade ist, fehlt mir wohl etwas. Aber ich bin nicht in der Lage mit Groß- und Kleinschreibung übereinstimmen. Als meine regex mit / XMI ich diese Ausgabe erhalten beenden;

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

Damit meine ich entdeckt, dass es keine Übereinstimmung zu assoziieren mit dem Skalar ich drucken versuche.

Wie auch immer ich weiß, ich habe ein Problem mit er will nicht mit keinem Fall übereinstimmen, denn wenn ich winnetstandard ändern, um winNetStandard es funktioniert und sagt ,; Windows Server 2003, Standard Edition. Das ist, was sollte sie sagen.

War es hilfreich?

Lösung

HTML :: TABLEEXTRACT kann hilfreich sein. Soweit Matching geht, ich bin nicht sicher, was es ist, dass Sie zu entsprechen versuchen; wenn Sie nur zwei Namen zu vergleichen, macht uc($foo) eq uc($bar) mehr Sinn. Aber wenn Sie einen regulären Ausdruck haben und wollen das ganze Spiel Groß- und Kleinschreibung zu sein, /i wird das tun.

Ah, so dass Sie wollen die unterstützten os Namen erhalten und sie in einen regulären Ausdruck zusammenstellen und es mit Vorstellungen? Dann gegeben @osnames, könnten Sie so etwas wie dies wollen:

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

Die ?i: begrenzt den Umfang der Fall Unempfindlichkeit gegenüber nur die OS-Namen; nur, wenn Sie GuestOS wollen auch so sein unempfindlich würden Sie verwenden /i (und (?:$osnames)).

Andere Tipps

Das wäre der richtige Zeitpunkt, um das /i Attribut zu verwenden, wie es den Fall ändert nicht wirklich etwas anhaben. Was ich tun würde, um die Liste der Betriebssysteme zu erhalten wäre, den HTML-Code der Abschnitte zu kopieren, in dem die Liste ist, die Verwendung Regex auf der Liste, so dass es in dem Format ausgibt Sie es brauchen den ausgegebenen Text, und dann verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top