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+ 个字符,直到行尾。
在 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+ 个字符,直到行尾。