Powershell `

您所在的位置:网站首页 换行符正则匹配 Powershell `

Powershell `

2024-03-11 18:40| 来源: 网络整理| 查看: 265

我正在尝试使用正则表达式清理一些html文件(是的,我见过the post。我并不是一般地解析html),我想删除所有不包含标签的行。我的脚本如下:

Remove-Item $args[1] $text = (Get-Content -Path $args[0] -Raw) $text = $text -replace "^\s*\r?\n" New-Item -Path $args[1] -ItemType File -Force -Value $text

有一堆其他的东西我想要替换,但我主要是尝试修复

我可以验证内部正则表达式是否正常工作: VSCode (它使用JS正则表达式,而不是powershell的.NET正则表达式)使用提供的正则表达式正确地匹配(并替换)有问题的行。

我知道这个Powershell is Special,所以我将Get-Content的输出转换为一个嵌入了换行符的原始字符串。这并没有什么帮助。

我可以验证其他函数(即remove-item和new-item)是否正常工作,以及其他正则表达式是否正常工作,方法是将正则文本从"^\s*\r?\n"更改为"p", "abc",并查看p标记是否都变成了abc标记。

此外,正则表达式\s*\r?\n可以工作,因此并不是正则表达式找不到换行符。

正则表达式\A\s*\r?\n也不起作用,这意味着它与PowerShell如何找到字符串的开始/结束位置有关。

到底怎么回事?

This is some text

(the next line has a bunch of spaces)

this is some more text

仅作为参考,当使用VSCode的JS regex引擎时,我的regex应该(并且确实)与上面示例的第二、第四和第五行匹配(我相信类似于PCRE)

最后,对正则表达式进行反编译:

^ from the start of the string \s* match any number of whitespaces \r? possibly followed by a carriage return \n then a newline


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3