【问题标题】:How to replace text infile with regular Expression?如何用正则表达式替换文本文件?
【发布时间】:2021-06-01 09:02:18
【问题描述】:

我想用一个更新的版本号替换一个版本号(即从 SVN 获取它,它工作正常)。出于测试目的,我尝试用简单的东西替换我发现的东西,但即使这样也不起作用。

这个正则表达式看起来不错(例如在https://regex101.com/ 中测试过)并且正确匹配我的版本号。

正则表达式:

([1-9][0-9]|[0-9])\.([1-9][0-9]|[0-9])\.([1-9][0-9][0-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9]|[0-9])

要匹配的文本(不匹配的):

Title="MyTitle 1.0.0"

根据https://regex101.com/ 这应该可以工作。但是 Visual Build 找不到任何匹配项,也没有进行替换。

我可以确认文件访问正常,因为 Visual Build 将文本“替换时出错”添加到指定文件。

我正在使用 Visual Build Professional v10。

【问题讨论】:

    标签: visual-build-professional


    【解决方案1】:

    我不确定你现有的正则表达式有什么问题,但是当我不得不做类似的替换时,我尝试制定一个有点不同的替换策略——基本上是为了让正则表达式尽可能简单.你可以试试这样的:

    要查找的文本或正则表达式:

    Title=.*

    例如,只匹配文件的正确行。不用担心现有的版本号值。

    替换匹配的文本:

    Title="MyTitle %v1%.%v2%.%v3%"

    我假设您的版本号部分有三个宏 v1v2v3。如果你有一个应用标题,你显然也可以在那里插入。

    【讨论】:

    • 简化我的正则表达式是我需要的提示。由于我不能保证标题会在行中独立存在(它是 XAML),所以我想出了这个,它匹配 Title 属性、第一个引号和直到下一个引号的任何内容:Title=".+?(?=")
    猜你喜欢
    • 2017-10-18
    • 2014-03-11
    • 2013-01-12
    • 2018-03-16
    • 2017-01-21
    • 2019-11-29
    • 2014-03-07
    相关资源
    最近更新 更多