我试着写一组检查的截止日期为域名的功能:字符串比较错误
(ql:quickload 'inferior-shell)
(defun whois-lookup (site)
(let ((request (format nil "whois ~a" site)))
(inferior-shell:run/ss request)))
(defun match-expiration-string (input)
(let ((test-string "Registrar Registration Expiration Date:"))
(string> input test-string)))
(defun domain-expiration-date (site)
(with-input-from-string (input (whois-lookup site))
(loop for line = (read-line input nil nil)
while line do
(when (match-expiration-string line)
(format t "~A~%~t~A ~%" site line)))))
我这样称呼它:(domain-expiration-date "startpage.com")
。
不幸的是,它并没有显示相关的行,而是显示了所有这些行。
match-expiration-string
似乎工作正常,所以我不知道是什么问题。
CL-USER> (match-expiration-string "Registrar Registration Expiration Date: 2016-05")
39 (6 bits, #x27, #o47, #b100111)
CL-USER> (match-expiration-string "Registrar Registration Expiration ")
NIL
'(字符串>“a”“注册商注册到期日期:”)=> 0。您应该使用'STRING ='(必要的关键字参数)来检查子字符串是否完全匹配。或者使用正则表达式。 – jkiiski
有道理。我有一个'string ='的版本,但是显然只有当该行足够长时。所以正则表达式!谢谢! – Pascal