0

我想解析 .XML 文件中的时间表达式 hh:mm:ss.xxx (小时、分钟、秒、毫秒)。它应该看起来像这样:

<condition property="illegal-tc"> <matches pattern="the_pattern" string="${timeCode}"/> </condition>

我需要的是模式 \d{2}:\d{2}:\d{2}.\d{3} 的否定。

我尝试做 ^[\d{2}:\d{2}:\d{2}.\d{3}]$ 但它不能正常工作。

4

2 回答 2

1

[...]构造匹配那些[和之间的字符集]。要获得否定匹配,您需要(?! ... )“否定前瞻”构造。

该模式^(?!\d{2}:\d{2}:\d{2}\.\d{3}).*$匹配任何不是“hh:mm:ss.fff”的东西。

请注意,单个数字小时或少于 3 位数字的一小部分仍将匹配!

于 2012-12-27T10:52:45.823 回答
0

我找到了另一种解决方案:执行“legal-tc”并在失败条件下使用这样的除非标签否定它:

<condition property="legal-tc">

 <matches pattern="^\d{2}:\d{2}:\d{2}.\d{3}$" string="${timeCode}"/>

</condition>

<fail message="Illegal Time Code" unless="legal-tc"/>

于 2012-12-28T14:20:26.873 回答