Dav*_*eUK 7 regex powershell optional
假设我有一个字符串:
$string1 = "Hello_World:How, are, you:-all -is -well"
Run Code Online (Sandbox Code Playgroud)
我想使用正则表达式来匹配冒号分隔的字符串部分到命名组.例如:
$pattern = "(?<first>.*)\:(?<second>.*)\:(?<third>.*)"
Run Code Online (Sandbox Code Playgroud)
这个$模式会成功匹配$ string1,我最终会得到以下匹配:
first=Hello_World
second=How, are, you
third=-all -is -well
Run Code Online (Sandbox Code Playgroud)
这很好,但是有一个问题.$ string1可能缺少第三部分,例如:
$string1 = "Hello_World:How, are, you"
Run Code Online (Sandbox Code Playgroud)
不幸的是,这个$ string1不再匹配正则表达式模式.如何使模式匹配两种格式的字符串?(即我应该总是有一个"第一"和"第二"匹配,如果提供的话,只有一个"第三"匹配).
使用?量词和非捕获组.另外,不要使用.*!
(?<first>[^:]*):(?<second>[^:]*)(?::(?<third>.*))?
Run Code Online (Sandbox Code Playgroud)
此外,您应该至少在开始时锚定您的正则表达式.
| 归档时间: |
|
| 查看次数: |
3634 次 |
| 最近记录: |