ANT:多行正则表达式比较 属性

ANT: Regex compare on multi-line property

在 Apache Ant 任务中,我正在尝试比较此命令的输出:

 <exec executable="svn" outputproperty="svnTest">
      <arg line="status ${GUI_BASE} -u -q" />
 </exec>

到这个正则表达式(我想检查是否有任何不以M开头的字符串)

^(?!M).+/gm

svnTest的值为

M             3234   C:\path\to\some\file1.txt
M             3234   C:\path\to\some\file2.txt

但以下条件的结果:

<regexp id="upd" pattern="^(\*).+/gm" />
        <condition property="matches" value="true" else="false">
            <matches string="${svnTest}">
                <regexp refid="upd" />
            </matches>
        </condition>

false

我怎样才能让它发挥作用?

您似乎想要获取第一个字符不是 M 的行。

您可以使用

pattern="^[^M].*"

这里,

  • ^ - 匹配字符串的开头
  • [^M] - 否定字符 class 匹配除 M
  • 之外的任何字符
  • .* - 任何 0+ 个字符,直到行尾。