放松NG不支持字符串结束正则表达式(美元)

时间:2014-08-19 08:11:03

标签: xml relaxng dollar-sign

我需要为xml中的属性提供一些有限的可能性,为此我在Relax NG验证文档中使用:

<param "pattern">myRegEx</param>

允许指定属性需要符合的一些正则表达式。

由于某种原因,模式不支持使用$(字符串结尾)符号。

示例:

<param "pattern">Why it does not work??$</param>

这应该匹配以&#34结尾的字符串;为什么它不起作用?&#34;句子。 但是,验证似乎完全忽略了$。

有谁理解为什么?

谢谢

纳撒尼尔

1 个答案:

答案 0 :(得分:1)

RNG&#39;模式&#39;参数与XSD简单类型定义上的模式facet具有相同的*语义。 XSD模式适用于要验证的整个词汇项 - XSD模式对于^和$没有用作字符串开头和字符串结尾锚点,因为XSD模式总是匹配整个输入字符串或不匹配。 (假设所有正则表达式语言都有^和$,如果XSD指定在模式的开始和结束时忽略它们,那可能会更好,但这并没有发生。)

如果你想定义一个模式,该模式匹配任何以字符串结尾的文本节点&#34;为什么它不起作用?&#34;,而不是两个字符串中的任何一个匹配&#34;为什么它不起作用$&#34;或者&#34;为什么它没有#&#34;,你想要写

<param name="pattern">.*Why does it not work\?\?</param>

注意:

  • 输掉$
  • 逃避?

(*在处理多种模式时存在一种无偿的不兼容性,但这与此无关。)