我正在尝试解析网站上的特定数据。
$strings = $body.split(";")
$strings2 = $strings.Where({$_ -like ("*recordData[`"key`"]*")})
我发现方括号是罪魁祸首,我用
$strings2 = $strings.Where({$_ -like ("*recordData*")})
它工作正常,虽然返回的方式更多的结果,然后我需要。 有没有办法可以搜索“recordData [key]”
$ body只是返回网页的全部内容
感谢。
编辑: 根据要求,输入数据就像这样
rs.currentColumn = 0;
recordData["dataGridExtraRow"] = 0;
recordData["rownum"] = "0";
recordData["key"] = '3354087';
recordData["factory"] = "cr";
最后我需要3354087号码,但只需挑选出我需要的线路就是问题,之后我就可以把它拆开了。
但是,我最终使用了.contains,感谢您的建议。 我看到之后有点像脸。答案 0 :(得分:1)
如果您正在使用like运算符,那么您将遇到一个问题,即开放方括号,它是PowerShell中的通配符。见About_Wildcards
... [] - Matches range of characters ...
用例就是这样会返回true。
"recordFata" -like "record[DF]ata"
因此,如果您要使用-like
,则需要在单引号中使用反引号来转义括号。您可以通过使用其他方法以相同的方式避免这种情况。
其他选项
"sdfafdrecordData[key]asdfasdfas".Contains("recordData[key]")
相当基本,大多数情况下无需担心特殊字符。
"sdfafdrecordData[key]asdfasdfas" -match "recordData\[key]"
请注意,方括号也是需要转义的正则表达式元字符。
答案 1 :(得分:1)
尝试使用单引号并使用反引号转义。
您还可以简化PowerShell语法的使用:
-V