【问题标题】:Powershell regex to replace patternPowershell 正则表达式替换模式
【发布时间】:2015-12-11 07:37:00
【问题描述】:

我的脚本应该查找逗号分隔的 3 位版本号(例如 1.2.3)
并将其替换为新的版本号。同一个文件有另一个不符合这个正则表达式的字符串,脚本仍然会改变它。

示例文件.txt

  "search-components@1.1.1"
  "e2bf8da9-275a-484d-95a6-7e6b8c0ce0ca"

从脚本中替换命令部分:

  -replace "\d.\d.\d","2.2.2"

我希望它给出这样的输出,

  "search-components@2.2.2"
  "e2bf8da9-275a-484d-95a6-7e6b8c0ce0ca" # This string not changed

但它也改变了第二个字符串,如下所示,我不打算这样做

   e2bf8da2.2.2a-484d-92.2.2e2.2.2ce0ca

我写的正则表达式都错了吗。有人可以帮忙吗?

【问题讨论】:

  • 正则表达式中的 "dot"(又名 句点 .)是匹配任何内容的元字符,因此 \d.\d.\d 匹配“一个数字后跟任何字符,然后是一个数字,然后是任何字符,然后是一个数字”。请参阅 Kasra 将点变成普通点的答案。
  • 感谢您的详细解释。

标签: regex


【解决方案1】:

您需要转义正则表达式中的点:

"\d\.\d\.\d"

Demo

【讨论】:

    猜你喜欢
    • 2012-06-20
    • 2016-02-13
    • 2012-08-01
    • 1970-01-01
    • 2016-10-20
    • 1970-01-01
    • 1970-01-01
    • 2012-02-12
    • 1970-01-01
    相关资源
    最近更新 更多