AutoHotkey: проверить, является ли строка URL-адресом - PullRequest
0 голосов
/ 12 мая 2011

Хорошо, у меня есть этот фрагмент AutoHotkey:

; Google text from any app
; from http://superuser.com/questions/7271/most-useful-autohotkey-scripts/165220#165220
#s::
MyClip := ClipboardAll
clipboard = ; empty the clipboard
Send, ^c
ClipWait, 2
if ErrorLevel  ; ClipWait timed out.
    return
Run http://www.google.com/#hl=en&q=%clipboard%
Clipboard := MyClip

Он работает нормально, но я хотел бы улучшить его, чтобы он обрабатывал случай, когда вы выделяете URL и автоматически запускаете сам URL.(Run %clipboard%) вместо поиска в Google.Как я могу заставить AutoHotkey определить, является ли строка URL-адресом?

Похоже, я мог бы использовать StringLeft или SubStr, чтобы извлечь первые несколько символов и посмотреть, соответствуют ли они http:// или www.или, может быть, что-то более надежное использование регулярных выражений?Однако я не совсем понимаю синтаксис AHK.

Этот скрипт проверяет буфер обмена на наличие URL-адресов, по-видимому, используя StringGetPos, но я не хочу определять, появляется ли www в любом месте в строке.Только если оно появляется в начале.

1 Ответ

4 голосов
/ 13 мая 2011

Вот ваш скрипт с кодом для проверки, является ли скопированный текст URL-адресом с помощью регулярного выражения. Если это URL, он просто запускает текст, в противном случае он использует старое поведение поиска в Google для скопированного текста.

#s::
MyClip := ClipboardAll
clipboard = ; empty the clipboard
Send, ^c
ClipWait, 2
if ErrorLevel  ; ClipWait timed out.
    return
If RegExMatch(Clipboard, "^(https?://|www\.)[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(/\S*)?$")
    Run %Clipboard%
Else
    Run http://www.google.com/#hl=en&q=%clipboard%
Clipboard := MyClip

Редактировать: Изменен код, чтобы он также соответствовал веб-адресам, начинающимся с 'www'.

...