regex - 如何将 -replace 中的捕获字符串更改为结果中的大写?

标签 regex powershell

给定数据库类型字符串 varchar(30) ,我想通过将类型名称大写并将其放在括号中来将其标准化为 SQL Server。期望的结果是 [VARCHAR](30) .

如何将 $1 转换为大写?该表达式标识类型并添加括号,但不添加 ToUpper()。

PS> "varchar(30)" -replace '^\[*(\w+)\]*(.*)','[$1]$2'
[varchar](30)

最佳答案

使用正则表达式的简化版本:

PowerShell [Core] v6.1+中:

PSCore> 'varchar(30)' -replace '^\[*\w+\]*', { '[' + $_.Value.ToUpper() + ']' }
[VARCHAR](30)

注意:如果输入中至多有一个[...]封装,则\[?和应使用 \]?

Windows PowerShell中:

WinPS> [regex]::Replace('varchar(30)', '^\[*\w+\]*', { param($m) '[' + $m.Value.ToUpper() + ']' })
[VARCHAR](30)

有关背景信息,请参阅this answer .

关于regex - 如何将 -replace 中的捕获字符串更改为结果中的大写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59937935/

相关文章:

c++ - 读取文件时宏定义的有效方法?

javascript - 了解基本的 Javascript 正则表达式

java - Powershell:使用 Process 对象捕获标准输出和错误

powershell - 检索 Azure Active Directory 中 Azure 应用程序的创建日期

powershell - 在PowerShell中变量旁边时的冒号(:)问题

javascript - 从谷歌地理编码结果中删除奇怪的日文字符

c# - 如何使用正则表达式禁止重复字符

JavaScript - 将字符串中的小数倒置

windows - 如何在 Ansible 的 win_environment 模块之后更新 Windows 环境变量?

windows - 如何在 Windows 上调试 "Could not add identity : agent refused operation"?