我正在制作所有可能由我的特定版本VMware支持的所有可能的操作系统名称的目录。最初,我在VMX文件中写下它们时都在写所有内容,但后来我找到了一个已列出的网站,问题是它们没有适当地提供“完美”的匹配项,这是使用该网站案例不敏感的正则属性?

另外,作为附带问题,是否可以从网站上提取OSS列表?他们看起来位于HTML形成的图表中。这将为我节省很多时间,不得不将它们全部输入。

我看了HTML ::表提取物,但我真的不明白如何使用它。就表格而言,我能够在网站代码中找到该部分,然后复制到新的HTML文件中,以便我可以在桌面上将其放置。

这很奇怪,我可能缺少一些东西。但是我无法与案例不敏感。当用 /xmi结束我的正则时,我会得到此输出;

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

我发现这意味着没有匹配可以与我要打印的标量相关联。

无论如何,我知道我遇到的问题都不想在没有案例的情况下匹配,因为如果我修改 winnetstandardwinNetStandard 它有效并说;Windows Server 2003, Standard Edition. 。这就是应该说的。

有帮助吗?

解决方案

html :: tableExtract 可能会有所帮助。就匹配而言,我不确定您要匹配是什么。如果您只是比较两个名字, 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名称上;只有您希望Guestos也会变得不敏感时,您才会使用 /i (和 (?:$osnames)).

其他提示

这将是使用的合适时机 /i 属性,因为改变案件不会真正损害任何事情。我要做的以获取操作系统列表将是复制列表所在的部分的HTML,在列表上使用Regex,以便它以所需的格式输出,然后使用输出的文本。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top