regex - 使用记事本++中的正则表达式替换数字增加的文本
问题描述
示例字符串:
<TemperatureRange min="min3" max="max3" uom="uom13" code="1013" />
<TemperatureRange min="min4" max="max4" uom="uom13" code="1013" />
找什么 : <TemperatureRange min="min.*" max="max.*" u
用。。。来代替 : <TemperatureRange min="10" max="10" u
输出 :
<TemperatureRange min="10" max="10" uom="uom13" code="1013" />
<TemperatureRange min="10" max="10" uom="uom13" code="1013" />
预期输出:
<TemperatureRange min="10" max="10" uom="uom13" code="1013" />
<TemperatureRange min="11" max="11" uom="uom13" code="1013" />
解决方案
由于您使用的是 Notepad++,我将假设您有 powershell。
随意改进这里的代码,因为它可能效率不高,但它应该可以满足您的需求。我这样做是为了让您甚至可以从最小值和最大值的不同数字开始。
function ReplaceFirstOccurrence ([string] $Source, [string]$Find, [string]$Replace)
{
$Place = $Source.IndexOf($Find);
$result = $Source.Remove($Place, $Find.Length).Insert($Place, $Replace);
return $result;
}
$text = @"
<TemperatureRange min="min3" max="max3" uom="uom13" code="10131" />
<TemperatureRange min="min3" max="max3" uom="uom13" code="10132" />
<TemperatureRange min="min3" max="max3" uom="uom13" code="10133" />
<TemperatureRange min="min3" max="max3" uom="uom13" code="10134" />
"@
#alternatively, you can read text from file with Get-Content -Path c:\path\to\file.txt
$findWhat = @"
<TemperatureRange min="min.*" max="max.*" u
"@
$replaceWithTemplate = @"
<TemperatureRange min="{num1}" max="{num2}" u
"@
$startNums = @{}
$startNums["{num1}"] = 10
$startNums["{num2}"] = 10
$matches = [regex]::Matches($text, $findWhat)
$outputResult=$text
foreach ( $match in $matches){
$replaceWith = $replaceWithTemplate
foreach($key in $($startNums.Keys))
{
$replaceWith = $replaceWith -replace $key,$startNums[$key]
$startNums[$key]++
}
$outputResult = ReplaceFirstOccurrence $outputResult $match.Value $replaceWith
}
$outputResult
结果是:
<TemperatureRange min="10" max="10" uom="uom13" code="10131" />
<TemperatureRange min="11" max="11" uom="uom13" code="10132" />
<TemperatureRange min="12" max="12" uom="uom13" code="10133" />
<TemperatureRange min="13" max="13" uom="uom13" code="10134" />
推荐阅读
- javascript - 是否可以将 index.html 中的值导入 .js 文件?(使用 parcel js)
- javascript - 我的方法或概念或问题的递归问题?
- api-platform.com - Caddy 允许 HTTP 与 Api 平台
- vb.net - List(Of ClassA) 包含一个 List(of ClassB) 和一个字符串。检查新字符串是否已经存在
- apache-kafka - spring cloud kafka流聚合值和使用rest api查询
- visual-studio-code - 在 VSCode 中查找最后一个操作或操作历史记录
- kotlin - 为什么 Mockito 会为此代码抛出“InvalidUseOfMatchersException”?
- asp.net-core - ASP.NET Core:在控制器/操作级别的过滤器中返回未授权的 Json 响应
- java - 使用 GroupLayout 在一行中添加两个 JPanel
- python - 如何绘制半圆的方程