【问题标题】:How to check for start of line using Ant replaceregexp task如何使用 Ant replaceregexp 任务检查行首
【发布时间】:2019-04-08 05:51:13
【问题描述】:

我有一个文件,我想用新值替换旧值。在我的文件中,我有以下内容:

我想用其他值替换 myList 值。为此,我在 Ant 中使用了“replaceregexp”任务。我为此使用了以下代码,这也将检查注释的 myList。

//myList="a","b","c","d","e";
myList="a","b","c","d","e";

<replaceregexp file="myfilename" match="myList=(.*)" replace="myList="somevalue" />

我想知道如何检查行首。这意味着只有当行以“myList”开头而不是行以“//myList”开头时才需要替换。

我该怎么做?

【问题讨论】:

  • 需要保留注释行吗?我建议只使用 Ant 的 propertyfile 任务来更改属性值。 ant.apache.org/manual/Tasks/propertyfile.html
  • 这是一个我需要修改的 groovy 文件。我没有解析完整的文件并继续,而是使用了 replaceregexp。

标签: regex ant


【解决方案1】:

这是一个基本的正则表达式问题。有几种方法可以做到这一点,最常见的是使用插入符号 (^) 字符来标记行首,例如:

<replaceregexp file="myfilename" match="^myList=(.*)" byline="true" replace="...

请注意,您需要byline="true",否则整个文件将被视为一个字符串来处理。

【讨论】:

  • 如果我也使用 ^ 符号,它只会更改注释行。 //myList="a","b","c","d","e"; myList="a","b","c","d","e";我在未注释的 myList 中的“e”之后给出了添加值的参数。但它会将新值附加到已注释的 myList 中。
  • 嗨,Dinesh。它可能没有多大帮助,但“它对我有用”。我添加了一个关于逐行处理的注释,这可能会有所帮助。我建议的另一件事是,在重新运行之前,您的文件可能没有“重置”以包含初始注释行;即,在您将 ^ 添加到构建文件之前, 在 Ant 的运行中匹配和处理了注释。
  • 嗨马丁,之前有一些命名约定问题,所以它对我不起作用。因为我已经修改了它,所以它对我有用。谢谢:)
猜你喜欢
  • 2013-08-29
  • 1970-01-01
  • 1970-01-01
  • 2011-12-21
  • 1970-01-01
  • 1970-01-01
  • 2014-02-14
  • 2011-02-07
  • 1970-01-01
相关资源
最近更新 更多