我正在尝试使用正则表达式清理一些 html 文件(是的,我看过这篇文章。我不打算一般解析 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
Run Code Online (Sandbox Code Playgroud)
我想更换很多其他东西,但我主要是在尝试修复
我可以验证内部正则表达式是否有效:VSCode(使用 JS 正则表达式而不是 powershell 的 .NET 正则表达式)使用提供的正则表达式正确匹配(并替换)有问题的行。
我知道Powershell 是 Special,所以我已将 的输出转换Get-Content为带有嵌入换行符的原始字符串。这并没有帮助。
我可以验证其他函数(即remove-item和new-item)是否工作得很好,并且其他正则表达式可以通过将正则表达式文本从"^\s*\r?\n"to更改为工作"p", "abc"并看到p标签全部变成abc标签来验证。
此外,正则表达式\s*\r?\n可以工作,所以并不是正则表达式找不到换行符。
正则表达式\A\s*\r?\n也不起作用,这意味着它与 PowerShell 如何查找字符串的开头\结尾有关。
这是怎么回事?
Remove-Item $args[1]
$text = (Get-Content -Path $args[0] -Raw)
$text = $text -replace "^\s*\r?\n"
New-Item …Run Code Online (Sandbox Code Playgroud) 我最近了解_了python shell中的内置变量,其目的是存储最后一个控制台答案.例如:
>>> 4 + 7
11
>>> _
11
>>> Test = 4
>>> Test + 3
7
>>> _
7
Run Code Online (Sandbox Code Playgroud)
作为一名长期的TI-Basic程序员,我更愿意考虑这个变量Ans而不是_.(是的,我知道这只是个人偏好,但无论如何这都是一个有趣的问题.)
问题:如何设置Ans变量以使其值始终与_变量相同?
这并不像刚刚做的那么简单Ans = _,因为这个shell日志显示:
>>> "test string"
'test string'
>>> _
'test string'
>>> Ans = _
>>> Ans
'test string'
>>> list('Other String')
['O', 't', 'h', 'e', 'r', ' ', 'S', 't', 'r', 'i', 'n', 'g']
>>> _
['O', 't', 'h', …Run Code Online (Sandbox Code Playgroud)