2017-02-04 12 views
0

AutoHotKeyスクリプトでRegExを使用している文字列に文字列が含まれているかどうかを確認しようとしています。文字列内に文字列が見つかった後に名前を抽出する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

@Attilioこの部分を '\ app \ folder \ file.phpとして更新します'は文字列ごとに異なるので、正規表現に入れてはいけません。私は 'G:\\ htdocs \\ projects \\ [^ \\] *'とマッチする最初の部分を削除するだけの結果が得られれば、必要な文字列の最後までこの正規表現テストをすべて試合するこの文字列の 'G:\ htdocs \ projects \ webdevapp \ app \ folder \ file.php'デモ - https://regex101.com/r/rFQRbT/1の' G:\ htdocs \ projects \ webdevapp' – 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

関連する問題