我正在实现一个函数(在 Python 中),用于检查字符串与 xsd:anyURI
的一致性。
根据Schema Central仅检查重复、连续和非连续的 #
字符和 %
后跟十六进制字符 0-Ff 以外的内容才有意义。
到目前为止,我有类似的东西并且它似乎有效:
if uri.search('(%[^0-9A-Fa-f]+)|(#.*#+)')
多个“#”符号的第二个表达式可能有问题。
最佳答案
如果您的目标是根据 Schema Central 解析器要求排除正则表达式,那么您就快成功了。前半部分,排除后面没有两个十六进制数字的百分号,最好使用否定前瞻断言来解决;后半部分很好,尽管您可以放弃最后一个重复指示器而不影响您的结果:
(%(?![0-9A-F]{2})|#.*#)
编译您的正则表达式,使其独立于大小写(i
标志),然后您就可以开始了。
推荐阅读:Python 标准库的 chapter on Regular Expression Operation Syntax .
关于python - 此正则表达式对于 xsd :anyURI 是否正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14466585/