我有一个使用-like
的Powershell脚本来进行值比较。我可以使用传统的正则表达式方法编写正则表达式,它在online testers I've used中工作,但我不能让它在我的脚本中工作。我怀疑这只是一个语法问题,但我引用的所有网站都没有专门解决脚本问题。
我正在检查名称空间,看是否有匹配项。例如,
www.domain.com的
www.itdomain.com的
www.anotherdomain.com的
www.somedomain.com的
在这个例子中,我只想匹配前两个选项。
在我的脚本中编写这段代码增加了一个小的复杂性,因为值“domain”在一个变量中,所以我尝试了,$domainUrl -like "*.(it)?$($domain).*"
,但结果总是false
。
我在Powershell语法中缺少了什么?
1条答案
按热度按时间qq24tv8q1#
-like
运算符匹配wildcard patterns,而不是regexes。您需要
-match
运算符。您的模式
"*.(it)?$($domain).*"
实际上是这两种模式语言的混合,这是行不通的。你的意思大概是:
字符串
请注意,
-match
--与-like
不同--默认情况下匹配 * 子字符串 *,因此不需要使用给定的正则表达式将输入字符串 * 作为一个整体 * 来使用。也就是说,上面匹配一个文字
.
(在正则表达式中必须转义为\.
),后跟itdomain
或domain
((it)?
匹配it
* 如果存在 *(?
))和另一个文字.
(输入字符串中的任何位置)。有关详细信息,请参阅this regex101.com page。(The regex可以被细化以使匹配更健壮。
有关
-like
(通配符)与-match
(正则表达式)的详细信息,请参见this answer。