RFC 3986//B

RFC 3986//B

Appendix B. Parsing a URI Reference with a Regular Expression

As the "first-match-wins" algorithm is identical to the "greedy" disambiguation method used by POSIX regular expressions, it is natural and commonplace to use a regular expression for parsing the potential five components of a URI reference.

早い者勝ち法は POSIX 正規表現で使われている曖昧さをなくすための貪欲法と同じものですから、 URI 参照の5つの部品を構文解析するのに正規表現を使うのは自然なことです。

The following line is the regular expression for breaking-down a well-formed URI reference into its components.

次に示すのは整形式 URI 参照を部品に分割するための正規表現です。

      ^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
       12            3  4          5       6  7        8 9

The numbers in the second line above are only to assist readability; they indicate the reference points for each subexpression (i.e., each paired parenthesis). We refer to the value matched for subexpression <n> as $<n>. For example, matching the above expression to

2行目の番号は可読性のために付記しただけのものです。 この数字は各部分式の参照点 (組になった括弧) を示しています。 部分式 n に一致した値を $n と書くことにします。 例として、先の正規表現は

http://www.ics.uci.edu/pub/ietf/uri/#Related

results in the following subexpression matches:

と一致し、部分式は次のように一致します。

      $1 = http:
      $2 = http
      $3 = //www.ics.uci.edu
      $4 = www.ics.uci.edu
      $5 = /pub/ietf/uri/
      $6 = <undefined>
      $7 = <undefined>
      $8 = #Related
      $9 = Related

where <undefined> indicates that the component is not present, as is the case for the query component in the above example. Therefore, we can determine the value of the five components as

ここで、 <undefined> はこの例での query 部品のように、部品が現れなかったことを示します。従って、 5つの部品の値は次のように決めることができます。

      scheme    = $2
      authority = $4
      path      = $5
      query     = $7
      fragment  = $9

Going in the opposite direction, we can recreate a URI reference from its components by using the algorithm of Section 5.3.

逆方向に進めることで5.3節の方法を使って部品から URI 参照を再生成することもできます。

License

RFCのライセンス

メモ