0

この XSD 正規表現の一致を理解するのに苦労しています。simpleType の定義は次のとおりです。

  <xs:simpleType name="data-fuelcorrfact">
    <xs:restriction base="xs:float">
      <xs:pattern value="\-?[1-9]\.[0-9]{4}"/>
    </xs:restriction>
  </xs:simpleType>

1 から 9 までの数字、ピリオド、および 0 から 9 までの別の数字が必要だと推測でき\-?ます。

誰かがこの正規表現を解読するのを手伝ってくれませんか? また、特定の XSD 正規表現値を構成する必要があることを説明できるプログラムまたは Web サイトの参照はありますか? ありがとう!

4

4 に答える 4

4

私は XSD に詳しくありませんが、通常の RegEx ルールを使用すると仮定すると、内訳は次のようになります。

まず、\-?. これは、1 つまたはゼロのダッシュに一致します。つまり、負かどうか。は\単なるエスケープ文字です。つまり、を特殊な RegEx 文字ではなく、-実際の文字として扱います。-ただし、角括弧の外では、通常、特別な意味はありません。XSDのことかもしれません。

次に、[1-9]ゼロ以外の任意の数字 (つまり、1、2、3、4、5、6、7、8、または 9) に一致します。だから一桁の数字。

実際、\.はピリオドに一致します。

次に、[0-9]{4}正確に 4 つの数字文字 (現在はゼロを含む) に一致する which があります。

したがって、(-10, 10) 内の任意の数値を検索しますが、(-1, 1) 内では正確に小数点以下 4 桁までは検索しません。奇妙な行動; そのように0付近の値を省略するのは非常に奇妙であるため、そうある[1-9]べきだと思います。[01-9]

于 2012-08-01T19:29:54.957 に答える
3

あなたはかなり近いです。は\-?オプションのマイナス記号で、 によってエスケープされます\。私は XSD にあまり詳しくないので、そのエスケープが実際に必要かどうかはわかりません。'1.0'正規表現は小数点以下 4 桁を正確に要求するため、検証に失敗します。これは の{4}一部です[0-9]{4}'1.000'一致する必要があります。

于 2012-08-01T19:28:53.770 に答える
1

は--でエスケープされてい\ます - これが実際に必要だとは思いません。おそらく誰かが安全を確保しようとしているのでしょう (エスケープされた文字が特別なものでなければ、そのまま出力されます)。

?ゼロまたは 1 の意味が続きます。

したがって、最初はオプションです-

1.0[0-9]{4}の後にあるため、検証に失敗しました.- これには小数点以下 4 桁が必要でしたが、小数点1.0は 1 つしかありませんでした。

XSD 正規表現リファレンスについては、こちらを参照してください。

于 2012-08-01T19:29:20.823 に答える
0

実際、XSD 仕様では、他のほぼすべての正規表現方言とは異なり、バックスラッシュでハイフンをエスケープすることはできません。お使いの XML スキーマ プロセッサは、受け入れる内容が過度に寛大であるようです。

于 2012-08-01T22:37:05.857 に答える