2017-02-04 80 views
0

我試圖檢查字符串是否在使用RegEx的AutoHotKey腳本中。RegEx在字符串中找到字符串後提取名稱

如果我的字符串是這樣的文件路徑:

G:\htdocs\projects\webdevapp\app\folder\file.php 

然後我需要提取webdevapp部分。

從AutoHotkey的文檔也給出了這個例子,將找到的值存儲到一個變量正則表達式的命令:

; Returns 1 and stores "XYZ" in SubPat1. 
FoundPos := RegExMatch("abcXYZ123", "abc(.*)123", SubPat) 

所以理論上的東西類似下面這樣除了正則表達式的部分就需要改變...

FoundPos := RegExMatch("G:\htdocs\projects\webdevapp\app\folder\file.php", "G:\htdocs\projects\(.*)\app\folder\file.php", DomainNameVar) 

任何幫助從文件路徑中提取該域名到AutoHotKey中的變量?

它基本上需要檢查,如果字符串以G:\htdocs\projects\開始,如果它不那麼點之後抓住任何字符,直到出現下一個\

+0

我不熟悉AuthoHotKey。什麼是'FoundPos:= RegExMatch(「G:\ htdocs \ projects \ webdevapp \ app \ folder \ file.php」,「G:\ htdocs \ projects \(。*)\ app \ folder \ file.php」 「,DomainNameVar)'(您可能希望將其納入問題以供參考)。在許多系統中,「\」可能是一個特殊字符,所以你可能想嘗試'FoundPos:= RegExMatch(「G:\\ htdocs \\ projects \\ webdevapp \\ app \\ folder \\ file.php」,「 G:\\ htdocs \\ projects \\(。*)\\ app \\ folder \\ file.php「,DomainNameVar)' – Attilio

+0

@Atiltil我將更新問題作爲這個部分'\ app \ folder \ file.php '不應該在正則表達式中,因爲它對每個字符串都是不同的。我gort這個正則表達式測試,以匹配所有的東西,直到我需要的字符串結尾,如果我只能得到結果從它刪除第一部分'G:\\ htdocs \\ projects \\ [^ \\] *'匹配G:\ htdocs \ projects \ webdevapp \ app \ folder \ file.php演示文件 - https://regex101.com/r/rFQRbT/1 – JasonDavis

回答

1

我知道了!

FoundPos := RegExMatch("G:\htdocs\projects\webdevapp\app\folder\file.php", "G:\\htdocs\\projects\\([^\\]+)*", DomainNameVar) 

G:\\htdocs\\projects\\([^\\]+)* 

演示https://regex101.com/r/rFQRbT/1