【发布时间】:2021-04-16 11:26:06
【问题描述】:
我正在尝试在 powershell 中使用正则表达式来逐行替换文本,但这会导致整行被替换为所需的值,但没有原始前导文本和不需要的美元符号。
带有要替换的行的示例文件:
server.ssl.keystore-password=ffdsfsa
server.ssl.key-password=ffdsaf
正则表达式示例:
KeyStorePassword='4Z9dwVQn6wSk5H3kWX2SsxGWhZ/jTUrwgDSyfYNCxN0='
'(server.ssl.key-password=).*',("`$1$KeyStorePassword")
但最终发生的事情是它替换了以下行:
$4Z9dwVQn6wSk5H3kWX2SsxGWhZ/jTUrwgDSyfYNCxN0=
当期望的结果是
server.ssl.key-password=4Z9dwVQn6wSk5H3kWX2SsxGWhZ/jTUrwgDSyfYNCxN0=
【问题讨论】:
-
你结婚了吗?您可能需要考虑使用这篇文章中概述的内置 INI 解析功能:stackoverflow.com/questions/43690336/… 这篇文章涵盖了写作:stackoverflow.com/questions/22802043/powershell-ini-editing
-
如果你命名你的捕获组,这个问题就会消失 -->
'(?<field>server.ssl.key-password=).*',"`${field}$KeyStorePassword"
标签: regex powershell