【问题标题】:Exclude expressin '?!' cannot be validated排除表达式'?!'无法验证
【发布时间】:2017-09-02 12:23:55
【问题描述】:

在我的 xsd 架构中,有一个特定的正则表达式 <xs:pattern value="(?!TR)[A-Z]{2}"/> 模式会导致错误。我只想忽略“TR”并匹配所有其他国家/地区代码。尽管正则表达式在几个在线编辑器中都可以正常工作,但 Eclipse 表示:

InvalidRegex:模式值 '(?!TR)[A-Z]{2}' 不是有效的正则表达式。报告的错误是:“当前选项设置不支持此表达式。”

尽管它是一个简单的表达式,但无法弄清楚为什么它不能被验证。由于此错误,我无法将 xsd 文件部署到服务总线。 aclipse 本身或其他有问题吗?

非常感谢所有建议!

【问题讨论】:

标签: regex xml eclipse xsd


【解决方案1】:

XML Schema regex flavor 不支持环视。您的正则表达式的非环视版本是

[A-SU-Z][A-Z]|[A-Z][A-QS-Z]

或者,使用character class subtraction

[A-Z-[T]][A-Z]|[A-Z][A-Z-[R]]

regex demo

请注意,我在演示中使用 ^$ 只是因为那里的风味是 PCRE。在 XSD pattern 中,正则表达式默认是锚定的,不需要 ^$

模式详情

  • [A-SU-Z](或[A-Z-[T]])- any uppercase ASCII letter other thanT`
  • [A-Z] - 任何大写的 ASCII 字母
  • | - 或
  • [A-Z] - 任何大写的 ASCII 字母
  • [A-QS-Z](或[A-Z-[R]]) - 除R 之外的任何大写ASCII 字母

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-12
    • 2014-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多