Hi!
- Is the "-replace" Parameter bounded to the cmdlet "Get-Content"? through googling i found it in many different contexts
- Why is the -replace Parameter not shown in the official Documentation? Get-Content Microsoft
Issue:
The text apporaches like this:olor sit amet, consetetur sadipscing elitr, sed diam nonumy LoremIpsum-648648sdfsd
I want to replace the substring via Regex from "LoremIpsum-xxx" to "Loremipsum"
This is my first Try:
(Get-Content "C:\File.cmd") -replace "[regex]::matches("LoremIpsum-(.*?)")" | Out-File -encoding ASCII C:\File.cmd
CodePudding user response:
-replace is not a Get-Content parameter, it is an operator that allows to use a regular expression to find a specified pattern and then either remove or replace the matched text with another.
In your case, you can use
(Get-Content "C:\File.cmd") -replace '(?<=\bLoremIpsum)-\w ' | Out-File -encoding ASCII C:\File.cmd
The (?<=\bLoremIpsum)-\w regex matches a hyphen (-) and one or more word chars (\w ) that are immediately preceded with a LoremIpsum as a whole word (\b is a word boundary).
Note you may replace \w with \S if you want to remove any one or more non-whitespace chars after LoremIpsum.
Alternatively, you can use
(Get-Content "C:\File.cmd") -replace '\b(LoremIpsum)-\w ', '$1' | Out-File -encoding ASCII C:\File.cmd
Here, LoremIpsum is captured into a capturing group (with ID 1 since it is the first capturing group in the regex), and the replacement is now $1, the replacement backreference referring to Group 1 value.
See the regex demo #1 and this regex demo.
