1

I am implementing a function (in Python) that checks for conformance of the string to xsd:anyURI.

According to Schema Central it only makes sense to check for repeated, consecutive and non-consecutive # characters and % followed by something other than hex characters 0-Ff.

So far, I have something like and it seems to be working:

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

The second expression for multiple '#' signs may be faulty.

4

2 に答える 2

1

Schema Central パーサーの要件に従って除外正規表現を目指している場合は、ほぼ完了です。2 桁の 16 進数が続かないパーセント記号を除く前半部分は、否定先読みアサーションを使用して解決するのが最適です。後半は問題ありませんが、結果に影響を与えずに最後の繰り返しインジケーターを捨てることができます。

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

i正規表現を大文字と小文字を区別しない (フラグ)でコンパイルすれば、準備完了です。

推奨される読み物:正規表現操作構文に関するPython 標準ライブラリの章。

于 2013-01-27T15:07:01.667 に答える
0

私は最近、否定的な先読みなしでこれを行う必要がありましたが、次のように動作するようです:

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

于 2015-10-15T00:17:21.070 に答える