我正在实现一个函数(在Python中),它检查字符串与xsd:anyURI
的一致性。
根据Schema Central,检查重复的,连续的和非连续的#
个字符以及%
后跟除了十六进制字符0-Ff之外的其他内容才有意义。
到目前为止,我有类似的东西,它似乎正在起作用:
if uri.search('(%[^0-9A-Fa-f]+)|(#.*#+)')
多个'#'符号的第二个表达式可能有问题。
答案 0 :(得分:1)
如果您的目标是根据Schema Central解析器要求排除正则表达式,那么您几乎就在那里。上半部分,不包括未跟随两个十六进制数字的百分号,最好使用否定先行断言来解决;下半场很好,但你可以抛弃最后一个重复指标而不影响你的结果:
(%(?![0-9A-F]{2})|#.*#)
使用大小写独立性(i
标志)编译你的正则表达式,你很高兴。
推荐阅读:Python标准库的chapter on Regular Expression Operation Syntax。
答案 1 :(得分:0)
我最近不得不做出负面的预测,以下似乎有效:
(%.?[^0-9A-Fa-f]|#.*#)