2017-02-04 79 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