如何用数字替换REGEX - 比如$ 1 <number>

时间:2016-02-16 15:04:56

标签: regex powershell

让我们假设我有一个字符串“something”并希望获得“some123”。

这将是我的正则表达式:/(some)(thing)/

// Pseudocode
$something = 'something'
$someone = $something.replace(/(some)(thing)/, '$1one') ###works
$some123 = $something.replace(/(some)(thing)/, '$1123') ###fails

$某人将毫无问题地工作,但$ some123将失败,因为解释器将查找不存在的组1123。

有什么想法吗?谢谢!

(编辑:我正在使用Powershell,但我认为它在其他语言中也是同样的问题,比如PHP)

1 个答案:

答案 0 :(得分:6)

在Powershell中使用的.NET正则表达式中,您需要在反向引用中的捕获组ID周围使用{}以消除任何歧义:

$something = 'something'
$someone = $something -replace "(some)(thing)", '${1}one' ### someone
$some123 = $something -replace "(some)(thing)", '${1}123' ### some123

enter image description here

如果您不确定,您还可以依赖命名的捕获

$someone = $something -replace "(?<some>some)(?<thing>thing)", '${some}one'

enter image description here