1

我正在实现一个函数(在 Python 中),用于检查字符串是否符合xsd:anyURI.

根据Schema Central,只有检查重复的、连续的和不连续的#字符以及%后跟十六进制字符 0-Ff 以外的字符才有意义。

到目前为止,我有类似的东西,它似乎正在工作:

if uri.search('(%[^0-9A-Fa-f]+)|(#.*#+)')

多个“#”符号的第二个表达式可能有问题。

4

2 回答 2

1

如果您的目标是根据 Schema Central 解析器要求排除正则表达式,那么您就快到了。前半部分,不包括没有后跟两个十六进制数字的百分号,最好使用负前瞻断言来解决;后半部分很好,尽管您可以在不影响结果的情况下放弃最后一个重复指示器:

(%(?![0-9A-F]{2})|#.*#)

用大小写独立(标志)编译你的正则表达式,i你很高兴。

推荐阅读:Python 标准库关于正则表达式操作语法的章节

于 2013-01-27T15:07:01.667 回答
0

我最近不得不在没有消极前瞻的情况下这样做,以下似乎有效:

(%.?[^0-9A-Fa-f]|#.*#)

于 2015-10-15T00:17:21.070 回答