regex - 如何更改反向引用的大小写?

标签 regex powershell

我正在尝试修改 PowerShell 中的反向引用,但运气不好 :(

这是我的例子:

"456,Jane Doe" -replace '^(\d{3}),(.*)$',"| $(`"`$2`".ToUpper()) | `$1 |"

如果我运行它,我会得到这个:

|简·杜 | 456|

但我真的很期待这个:

|简·多伊 | 456|

如果我运行以下命令(与上面相同,但在调用 ToUpper 时没有“()”):

"456,Jane Doe" -replace '^(\d{3}),(.*)$',"| $(`"`$2`".ToUpper) | `$1 |"

我明白了:

| string ToUpper(), string ToUpper(System.Globalization.CultureInfo culture) | 456 |

因此 PowerShell 似乎知道反向引用“$2”是一个字符串,但为什么我不能让 PowerShell 将其转换为大写?

特里

最佳答案

[Regex]::Replace('456,Jane Doe',
    '^(\d{3}),(.*)$',
    {
        param($m)
        '| ' + $m.Groups[2].Value.ToUpper() + ' | ' + $m.Groups[1].Value + ' |'
    }
)

不是很漂亮,我承认。遗憾的是,您不能在 -replace 运算符中使用脚本 block 作为替换。

关于regex - 如何更改反向引用的大小写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6818809/

相关文章:

javascript - 如何使用正则表达式将相同的模式文本替换为空白?

c++ - 编译器能否从正则表达式中计算出 DFA?

javascript - Javascript 中的单词边界匹配

bash - Codeception bash 颜色输出不显示

azure - 使用 azcopy 从带有 SAS 链接的 blob 下载 zip 文件

javascript - 如何在 JavaScript 中使用正则表达式删除除第一个字符之外的特定字符?

正则表达式仅在字符序列之后匹配出现

powershell - 使用 ICACLS 将文件权限设置为 'read-only'

powershell - 什么是 Windows PowerShell?

PowerShell:如何将对象通过管道传输到接受输入 "ByPropertyName"的参数?