我的情况是否适合使用'/ i'REGEX属性?

我正在制作我的特定版本的VMWare可以支持的所有可能的操作系统名称的大型目录。最初我写的是他们所有人,因为他们站在VMX文件中,但后来我发现了一个网站,他们都列出了,问题是他们没有正确地提供一个“完美”匹配,这将是使用它的最佳时机不区分大小写的正则表达式属性? 另外作为一个附带问题,是否可能从网站上提取操作系统列表?他们看起来是在HTML格式图表中。这将节省我很多时间不得不输入它们。 我查看了HTML :: Table摘录,我真的不明白如何使用它。就表格而言,我能够找到网站代码中的部分,然后我复制到一个新的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 :: TableExtract可能会有所帮助。就匹配而言,我不确定你想要匹配的是什么;如果你只是比较两个名字,
uc($foo) eq uc($bar)
更有意义。但是如果你有一个正则表达式并希望整个匹配不区分大小写,
/i
就会这样做。 啊,所以你想获得支持的os名称并将它们组装成正则表达式并使用它进行匹配?然后,给定@osnames,你可能想要这样的东西:
my $osnames = join('|', map quotemeta, sort { length($b) <=> length($a) } @osnames);
my $regex = qr/guestOSs*=s*"(?i:$osnames)"/;
?i:
仅限于操作系统名称的不区分大小写的范围;只有当您希望guestOS也不区分大小写时才使用
/i
(和
(?:$osnames)
)。     
这是使用
/i
属性的正确时间,因为更改案例不会对任何事情造成任何伤害。获取操作系统列表的方法是复制列表所在部分的html,在列表中使用正则表达式,使其以您需要的格式输出,然后使用输出的文本。     

要回复问题请先登录注册