Powershell RegEX文件夹树

时间:2015-05-21 19:15:18

标签: regex

有人请说明这两个RegEx的差异吗? (在版本1和版本2之间)我在其中看到的唯一区别是额外的Paragraph para = new Paragraph(); para.Inlines.Add("Hello there"); // adjust spacing between paragraphs with Margin property para.Margin = new System.Windows.Thickness(5, 1, 1, 5); flowDoc.Blocks.Add(para); 但如果有人能够向我解释这意味着什么,将非常感谢!

第一版

<FlowDocument>
    <Paragraph Name="newPara" Margin="5,1,1,5">
        Hello There
    </Paragraph>
</FlowDocument>

第二版

(.:\\.*?)

1 个答案:

答案 0 :(得分:1)

RegExp: (.:\\.*?)

  • (打开一个带编号的匹配组
  • .匹配每个字符 - 只有一个,因为在.之后没有?,+,*或{...}
  • \\匹配\字符
  • .*可以随时匹配任何字符(零,一,......,无限)
  • ?告诉*不要贪心,所以.*会匹配所有字符,直到下一个\
  • )关闭了匹配组

示例:

Input:
  `D:\Dept\CC\SDL\14-15\StaffAdministration\CFCA`  
RegExp:
  `^(.:\\.+?)(\\\d{2}-\d{2})(\\.*)$`
Result:
  $Matches[0] = "D:\Dept\CC\SDL\14-15\StaffAdministration\CFCA"
  $Matches[1] = "D:\Dept\CC\SDL"
  $Matches[2] = "\14-15"
  $Matches[3] = "\StaffAdministration\CFCA"

如果$YY"xxx",则"$($Matches[1])\$YY$($Matches[3])"评估为
"D:\Dept\CC\SDL\xxx\StaffAdministration\CFCA"

第二个正则表达式版本不匹配,因为没有第二个:字符。

注意:
有一种更简单的方法可以用另一个字符串替换14-15 有关详细信息,请参阅-replace运算符。

<强>附录

  • a? = a {0,1}
  • a+ = a {1,}
  • a* = a {0,}
  • aa = a {2}

这是.NET Regular Expression Language引用。

这也是Python的RegExp reference。 PowerShell / .NET使用几乎相同的语法。