Будет ли моя ситуация подходящим местом для использования атрибута Regex ' /i'?

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

  •  12-10-2019
  •  | 
  •  

Вопрос

Я делаю большой каталог всех возможных имен ОС, которые могут быть поддержаны моей конкретной версией VMware. Первоначально я писал их все, когда они стояли в файлах VMX, но затем я нашел веб -сайт, на котором их все перечислили, проблема в том, что они не соответствуют должным образом, чтобы обеспечить «идеальный» матч, будет ли это идеальное время для использования Атрибут Regex для нечувствительности к случаю?

Кроме того, в качестве побочного вопроса, возможно, это может извлечь список OSS с сайта? Они выглядят в формированной HTML -диаграмме. Это сэкономит мне много времени, чтобы напечатать их все.

Я посмотрел на экстракт таблицы html :: и не очень понимаю, как его использовать. Что касается таблицы, я смог найти раздел в коде веб -сайтов, и я скопировал в новый 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 :: alextract может быть полезным. Что касается совпадения, я не уверен, что вы пытаетесь соответствовать; Если вы просто сравниваете два имени, 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: ограничивает объем нечувствительности случая только на имена ОС; Только если вы хотите, чтобы гостьоно также нечувствительны, вы бы использовали /i (а также (?:$osnames)).

Другие советы

Это будет подходящее время для использования /i Атрибут, так как изменение дела не может ничего повредить. Что я бы сделал, чтобы получить список операционных систем, это скопировать HTML разделов, где список, используйте Regex в списке, чтобы он выводил в формате, который вам нужен, а затем использовал выходной текст.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top