首页 > 解决方案 > Powershell 逆替换正则表达式

问题描述

Powershell 7.0 脚本:我想反转我在replace.

我有这样的事情:

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

这里的名字是这种模式(随机是随机字符和不同长度的数字):

random A00B00 random

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

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

我尝试了不同的正则表达式,但对我没有任何帮助

标签: regexpowershellreplace

解决方案


你有几个选择来实现你正在寻找的东西。

一种方法是使用正则表达式环顾四周并替换您不想要的内容:

'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'

推荐阅读