首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我的情况适合使用‘/i’REGEX属性吗?

我的情况适合使用‘/i’REGEX属性吗?
EN

Stack Overflow用户
提问于 2011-01-18 11:37:10
回答 2查看 89关注 0票数 0

我正在为我的特定VMWare版本支持的所有可能的操作系统名称创建一个大型目录。最初我把它们都写在VMX文件中,但后来我发现一个网站上列出了它们,问题是它们没有正确地大小写来提供一个“完美”的匹配,现在是不是使用regex属性来区分大小写的最佳时机?

另外,作为一个次要问题,是否可以从网站中提取OSs列表?它们看起来像是在HTML格式的图表中。这将为我节省大量的时间,让我把它们都打出来。

我看过HTML::Table extract,但我真的不知道如何使用它。就表格而言,我能够在网站代码中找到该部分,并将其复制到一个新的html文件中,这样我就可以将其放在我的桌面上。

这很奇怪,我可能遗漏了什么。但是我不能匹配不区分大小写。当我的正则表达式以/xmi结束时,我得到以下输出;

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

我发现这意味着没有与我试图打印的标量相关联的匹配项。

无论如何,我知道我遇到了问题,因为如果我将winnetstandard修改为winNetStandard,它就会工作,并说:;Windows Server 2003, Standard Edition,所以我不想匹配大小写。这就是它应该说的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-18 11:47:38

HTML::TableExtract可能会有所帮助。就匹配而言,我不确定您尝试匹配的是什么;如果您只是比较两个名称,uc($foo) eq uc($bar)更有意义。但是,如果您有一个正则表达式,并且希望整个匹配不区分大小写,/i将会这样做。

啊,所以你想获取支持的操作系统名称,并将它们组装成正则表达式,然后使用它进行匹配?然后,给定@osname,你可能想要这样的东西:

代码语言:javascript
运行
复制
my $osnames = join('|', map quotemeta, sort { length($b) <=> length($a) } @osnames);
my $regex = qr/guestOS\s*=\s*"(?i:$osnames)"/;

?i:将不区分大小写的范围限制为仅操作系统名称;只有当您希望guestOS也不区分大小写时,才会使用/i (和(?:$osnames))。

票数 2
EN

Stack Overflow用户

发布于 2011-01-18 11:47:15

这将是使用/i属性的正确时机,因为更改大小写实际上不会造成任何损害。要获得操作系统列表,我会做的是复制列表所在部分的html,在列表上使用regex,以便它以您需要的格式输出,然后使用输出的文本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4720248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档