Open DEberhardt opened 2 years ago
Found something that could work:
$ReadmeContent = (Get-Content $Path)
#$ReadmeContent = $ReadmeContent -replace "!\[$($Subject)\].+\)", "![$($Subject)](https://img.shields.io/badge/$Subject-$Status$Percent-$Color.svg)"
$Pattern = "!\[$($Subject)\].+?\)"
$String = "![$($Subject)](https://img.shields.io/badge/$Subject-$Status$Percent-$Color.svg)"
$ReadmeContent = $ReadmeContent | ForEach-Object {
if ( ([regex]::Matches($_, $Pattern).success) ) { $_ -replace $Pattern, $String } else { $_ }
}
$ReadmeContent | Set-Content -Path $Path
for my testing, it did leave the rest alone and just altered the matching string only
Hello,
first of all, thank you for this, this module helps A LOT - made more progress in the last two weeks learning and understanding the build process, runners, etc. than in the last two years!
I want to utilize
Set-ShieldsIoBadge
and I have a little table that contains the badges, looks like this:Component Status
after running updates against them, it looks like this:
Component Status
Looking into
Set-ShieldsIoBadge
, I find that the match string is finding too much:It looks like it replaces the whole line until the (last?) ')' rather than the next one found. Playing around with Regex and Lazy operators, but cannot find a suitable match that would reduce the match to the actual.
Is there a way to do this please?
Thank you, David