如何在行中检测可选字段?
$l = "prg=PowerShell°V=2.0°dtd=20120602°user=kjuz°pwd=jhiuz°chk=876876°dep=Lab1°floor=4°"
$found = $l -match '(?=.*?°dtd=(\d+))(?=.*?°user=(.+?)°)(?=.*?°chk=(.+?)°).*'
-match中的所有文件必须存在,否则$ found = $ false。 如何检测可选字段,例如> dep = Lab1<和> floor = 4<可能在那里,然后我需要他们的价值观? 是否存在“单行”解决方案,字段的顺序各不相同,是不是已修复?
提前致谢
Gooly
答案 0 :(得分:1)
分而治之的方法呢?吐出字符串,°
字符看起来像一个字段分隔符。也就是说,
$ll = $l.Split('°')
现在你有另一个可以使用-match
运算符过滤的数组,
$ll -match "(floor)|(user)"
# Output:
user=kjuz
floor=4
通过过滤分割的字符串,您可以非常轻松地向前工作,而无需复杂且难以维护的正则表达式尝试在一口咬合整个模式。