2011-05-12 416 views
0

好了,我這有AutoHotkey的片段:AutoHotkey的:測試一個字符串是一個URL

; 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?

好像我可以使用StringLeftSubStr提取前幾個字符,看它們是否匹配http://www.,或者也可以是更強大的使用正則表達式?不過,我不太瞭解AHK的語法。

This script檢查剪貼板中的網址,顯然使用StringGetPos,但我不想,如果顯示有www 的字符串中的任何檢測。只有當它出現在開頭。

回答

3

以下是您的腳本,其中包含的代碼用於檢查複製的文本是否通過正則表達式構成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' 網站地址。

+0

太棒了!但我也希望它能夠處理「www.something.com」。運行命令適用於這些 – endolith 2011-05-13 14:04:11

+0

對不起,我錯過了你的問題中的那一點。我編輯過的代碼也適用於以「www」開頭而不是「http://」開頭的網址。 – 2011-05-17 11:28:40

+0

太棒了!我還爲它添加了URI編碼,因此它可以處理搜索「#IfWinActive」之類的內容。 https://gist.github.com/823381 – endolith 2011-05-17 16:24:47

相關問題