Python 多行替换
Python Multiline Replace
我正在尝试通过 Windows RM 获取 python 到 运行 的 PowerShell 脚本,因为编码我将参数注入文件的顶部,但是这意味着我需要删除现有的 Param 函数,我几乎设法让正则表达式工作,但有时出现的“参数(强制)”部分弄乱了我的正则表达式,有人可以帮我修复它吗。
我不希望它与脚本中其他地方可能存在的单词 Param 相匹配。
......
Param(
[Parameter(Mandatory)]
[String]$TaskName,
[Switch]$Debug = $false
)
# Debug
if ($Debug)
Python 2.7 命令:
args = re.sub("Param(\s*\r*\n[^)]+)", "", scriptfile.read(), re.M )
您可以使用
(?sm)^\s*Param\(.*?\)$
见regex demo。此模式假定 )
右侧匹配边界位于一行的末尾,并且 Param
内部行不能以 )
字符结尾。
详情:
(?sm)
- re.S
和 re.M
选项已启用
^
- 行首
\s*
- 零个或多个空格
Param\(
- Param(
字符串
.*?
- 尽可能少的任何零个或多个字符
\)
- 一个 )
字符
$
- 行尾
参见 Python demo:
import re
test_str = "Param(\n [Parameter(Mandatory)]\n [String]$TaskName,\n [Switch]$Debug = $false\n)\n\n# Debug\nif ($Debug)\n\nParam(...)"
print (re.sub(r"^\s*Param\(.*?\)$", '', test_str, 0, re.M|re.S))
输出是
# Debug
if ($Debug)
我正在尝试通过 Windows RM 获取 python 到 运行 的 PowerShell 脚本,因为编码我将参数注入文件的顶部,但是这意味着我需要删除现有的 Param 函数,我几乎设法让正则表达式工作,但有时出现的“参数(强制)”部分弄乱了我的正则表达式,有人可以帮我修复它吗。
我不希望它与脚本中其他地方可能存在的单词 Param 相匹配。
......
Param(
[Parameter(Mandatory)]
[String]$TaskName,
[Switch]$Debug = $false
)
# Debug
if ($Debug)
Python 2.7 命令:
args = re.sub("Param(\s*\r*\n[^)]+)", "", scriptfile.read(), re.M )
您可以使用
(?sm)^\s*Param\(.*?\)$
见regex demo。此模式假定 )
右侧匹配边界位于一行的末尾,并且 Param
内部行不能以 )
字符结尾。
详情:
(?sm)
-re.S
和re.M
选项已启用^
- 行首\s*
- 零个或多个空格Param\(
-Param(
字符串.*?
- 尽可能少的任何零个或多个字符\)
- 一个)
字符$
- 行尾
参见 Python demo:
import re
test_str = "Param(\n [Parameter(Mandatory)]\n [String]$TaskName,\n [Switch]$Debug = $false\n)\n\n# Debug\nif ($Debug)\n\nParam(...)"
print (re.sub(r"^\s*Param\(.*?\)$", '', test_str, 0, re.M|re.S))
输出是
# Debug
if ($Debug)