Powershell Inverse替换正则表达式

时间:2020-04-17 23:40:43

标签: regex powershell replace

Powershell 7.0脚本:我想撤消在replace中使用的正则表达式。

我有这样的东西:

$a = $_.BaseName -replace 'REGEX', ''

此处的名称采用这种模式(随机是随机字符和长度不同的数字):

random A00B00 random

其中的数字都是不同的。我可以使用A[0-9][0-9]B[0-9]来匹配我想要的东西,但是,我只替换了我想要的东西。

我希望命令后的字符串是A00B00而不是random random

我尝试了不同的正则表达式,但对我没有用

1 个答案:

答案 0 :(得分:3)

您有几种选择可以实现所需的内容。

一种方法是使用regex环顾四周并替换不想要的内容:

'random A00B00 random' -replace '(?<=^).*(?=A\d{2}B\d{2})' -replace '(?<=A\d{2}B\d{2}).+'

或者您使用向后引用,并用正则表达式捕获组中匹配的一部分原始字符串替换您的字符串:

'random A00B00 random' -replace '.+(A\d{2}B\d{2}).+','$1'
相关问题