正则表达式排除单词(XML Schema风格)

时间:2012-04-03 07:02:34

标签: regex xsd

目前我正在尝试使用以下条件找到正则表达式:

Match:          FOO_.* (valid if the string contains FOO_ at the beginning)
Don't Match:    FOO_BAR (not valid if the string contains BAR)

通常我会使用以下表达式:

FOO_(?!BAR)

我的解决方案的问题是,我想在xml架构中使用它。将它与解析器一起使用会显示以下错误消息:

schema.xsd:50: element pattern: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}pattern': The value 'FOO_(?!BAR)' of the facet 'pattern' is not a valid regular expression.
WXS schema schema.xsd failed to compile

是否有可读的;-)工作解决方案,或者只是在xml架构中是不可能的?

2 个答案:

答案 0 :(得分:4)

XML架构中不支持表达式的Lookaround部分(?!BAR)

对于您的具体示例,以下表达式应该让您了解如何解决此限制:

FOO_([^B].*|B([^A].*|A([^R].*)?)?)?

答案 1 :(得分:0)

以下技巧对您尝试排除的短语不起作用吗?

Restrict word list in XML schema