URLをパースする Emacs EmacsLisp
Emacs Lispを使ってURLをパースする方法を調べてみた。
https://www.gnu.org/software/emacs/manual/html_node/url/URI-Parsing.html
url-generic-parse-url
関数を使うと良いらしい。
(url-generic-parse-url "https://www.youtube.com/watch?v=12345")
#s(url "https" nil nil "www.youtube.com" nil "/watch?v=12345" nil nil t nil t t)
これはURLパース結果が格納される構造体で、次のようにして要素にアクセスする。 変数 u
には上記の結果が入っている。
(url-host u)
www.youtube.com
(url-type u)
https
URLの構造体について詳しく知りたければ url-generic-parse-url
のHelpを見ると良い。
例えば下記のUSERを取得したいときは (url-user u)
を実行する。
Return an URL-struct of the parts of URL. The CL-style struct contains the following fields: TYPE is the URI scheme (string or nil). USER is the user name (string or nil). PASSWORD is the password (string [deprecated] or nil). HOST is the host (a registered name, IP literal in square brackets, or IPv4 address in dotted-decimal form). PORTSPEC is the specified port (a number), or nil. FILENAME is the path AND the query component of the URI. TARGET is the fragment identifier component (used to refer to a subordinate resource, e.g. a part of a webpage). ATTRIBUTES is nil; this slot originally stored the attribute and value alists for IMAP URIs, but this feature was removed since it conflicts with RFC 3986. FULLNESS is non-nil if the hierarchical sequence component of the URL starts with two slashes, "//".