在数字旁边重新插入捕获组

时间:2014-10-26 19:16:41

标签: regex powershell

这是一个例子。尝试重新插入捕获的子域,但由于父域以数字开头,因此导致问题。

'127.0.0.1 test.2domain.com' -replace '127.0.0.1 (.*)2domain.com', '192.168.1.1 $12domain.com'

如果你放一个空格,正则表达式变量会正确扩展,但它也会插入空格。

'127.0.0.1 test.2domain.com' -replace '127.0.0.1 (.*)2domain.com', '192.168.1.1 $1 2domain.com'

我知道我可以在这一点上做另一个替换以摆脱它,我想知道是否有办法完成第一个例子?

2 个答案:

答案 0 :(得分:3)

作为替代方案,您可以将正则表达式的其余部分包含在自己的一组中,例如:

PS > '127.0.0.1 test.2domain.com' -replace '127.0.0.1 (.*)(2domain.com)', '192.168.1.1 $1$2'
192.168.1.1 test.2domain.com

答案 1 :(得分:1)

您可以将-replace代码放在subexpression $(...)

PS > "$('127.0.0.1 test.2domain.com' -replace '127.0.0.1 (.*)2domain.com', '192.168.1.1 $1')2domain.com"
192.168.1.1 test.2domain.com
PS >

另请注意,我使用引号"..."来包含字符串。您需要这些以便评估子表达式。