2011-05-12 4 views
0

확인의 URL 인 경우, 그래서 나는이 AutoHotkey를 조각있어 : 그것은 잘 작동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을 검색하면 Google에서 검색하는 대신 URL 자체 (Run %clipboard%)가 자동으로 실행됩니다. 문자열이 URL인지를 AutoHotkey가 어떻게 감지 할 수 있습니까? 그들이 http:// 또는 www., 아니면 더 강력한 무언가가 정규 표현식을 사용하여 일치하는 경우 내가 StringLeft 또는 SubStr 처음 몇 문자를 추출하고 참조하는 데 사용할 수있는 것처럼

이 보인다? 그래도 AHK 구문을 이해하지 못합니다.

This script 확인 URL의 클립 보드, 분명히 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

+0

과 함께 작동합니다. 죄송합니다. 질문에 그다지 빠뜨 렸습니다. 나는 'http : //'가 아닌 'www'로 시작하는 URL로 작업하도록 코드를 편집했다. –

+0

좋아요! 또한 URI 인코딩을 추가하여 "#IfWinActive"와 같은 것을 검색 할 수 있습니다. https://gist.github.com/823381 – endolith

관련 문제