PowerShell,RegEx:可选条目 - 如何?

时间:2014-06-03 15:12:23

标签: regex powershell

如何在行中检测可选字段?

    $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

1 个答案:

答案 0 :(得分:1)

分而治之的方法呢?吐出字符串,°字符看起来像一个字段分隔符。也就是说,

$ll = $l.Split('°')

现在你有另一个可以使用-match运算符过滤的数组,

$ll -match "(floor)|(user)"
# Output:
user=kjuz
floor=4

通过过滤分割的字符串,您可以非常轻松地向前工作,而无需复杂且难以维护的正则表达式尝试在一口咬合整个模式。