[英]Powershell Get-Content -> Parameter "-replace"
你好!
颜色 sit amet, consetetur sadipscing elitr, sed diam nonumy LoremIpsum-648648sdfsd
我想通过正则表达式将 substring 从“LoremIpsum-xxx”替换为“Loremipsum”
这是我的第一次尝试:
(Get-Content "C:\File.cmd") -replace "[regex]::matches("LoremIpsum-(.*?)")" | Out-File -encoding ASCII C:\File.cmd
-replace
不是Get-Content
参数,它是一个运算符,允许使用正则表达式查找指定模式,然后删除匹配的文本或将其替换为另一个。
在你的情况下,你可以使用
(Get-Content "C:\File.cmd") -replace '(?<=\bLoremIpsum)-\w+' | Out-File -encoding ASCII C:\File.cmd
(?<=\bLoremIpsum)-\w+
正则表达式匹配一个连字符 ( -
) 和一个或多个单词字符 ( \w+
),它们紧跟在整个单词的LoremIpsum
之前( \b
是单词边界)。
请注意,如果您想在LoremIpsum
之后删除任何一个或多个非空白字符,则可以将\w+
替换为\S+
。
或者,您可以使用
(Get-Content "C:\File.cmd") -replace '\b(LoremIpsum)-\w+', '$1' | Out-File -encoding ASCII C:\File.cmd
在这里, LoremIpsum
被捕获到一个捕获组中(ID 为 1,因为它是正则表达式中的第一个捕获组),现在替换为$1
,替换反向引用引用组 1 的值。
请参阅正则表达式演示 #1和此正则表达式演示。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.