Power Shell与Python的Regex Search等效吗?

时间:2018-12-03 06:53:23

标签: python powershell

我发现PowerShell的正则表达式匹配,但是找不到Powershell等同于Python的正则表达式搜索。

以下是Python中的示例。

CustNo Audit   History   Inputter Authoriser

 2     CHANGE  BEFORE     XYZ      XYZ
 2     CHANGE  CURRENT    TOM      TOM
 3     ADD     NEW        TOM      TOM
 3     CHANGE  CURRENT    MAX      MAX

1 个答案:

答案 0 :(得分:2)

与Python代码等效的PowerShell如下所示:

$inputstring = 'iqn.2007-11.com.storage:srmgrsmisvstvol2-ju7wjffssldf-df-sdf-ewr-v0dd04708bb13b686.000'
if ($inputstring -match '(\w*-){4}(\w*)') {
    $matches[0]
}

-match operator(默认情况下不区分大小写)用于根据正则表达式检查字符串。如果找到匹配项,将使用这些匹配项填充automatic variable $matches。然后可以通过索引访问匹配项:0表示完全匹配,1表示第一个捕获的组,2表示第二个捕获的组,依此类推。

除了(隐含大小写)基本版本(-match)之外,PowerShell比较运算符通常具有显式区分大小写和不区分大小写的版本(-cmatch-imatch)。

$inputstring -match '(\w*-){4}(\w*)'   # case-insensitive
$inputstring -imatch '(\w*-){4}(\w*)'  # case-insensitive
$inputstring -cmatch '(\w*-){4}(\w*)'  # case-sensitive

您还可以通过正则表达式中的miscellaneous constructs启用或禁用区分大小写,优先于运算符的区分大小写:

$inputstring -imatch '(?-i)(\w*-){4}(\w*)'  # case-sensitive
$inputstring -cmatch '(?i)(\w*-){4}(\w*)'   # case-insensitive