2

次のような内容のファイルがあります。

garbage
garbage
printfile ps = "Elopak Zufriedenheit After Sales.ps";
garbage
garbage

(二重引用符)の間の部分をキャプチャしたいのです"" が、その部分の値は常に変化します。-を見つけるために正規表現を作成しました printfile psが、そこから先に進むための最良の方法は何ですか?

新しいコード:

Dim PFileRegex As New Regex("printfile ps *\t*= *\t*""[\w\s]*.ps\s*""") 
Dim PFilematch As Match = PFileRegex.Match(parttext)

                    If PFilematch.Success = True Then
                        Dim Quote As Char = """"c
                        Dim FirstQuote = PFilematch.Value.IndexOf(Quote)
                        Dim LastQuote = PFilematch.Value.LastIndexOf(Quote)

                        Dim PSFile = PFilematch.Value.Substring(FirstQuote + 1, (LastQuote - FirstQuote) - 1)
                        Debug.Print(PSFile)
                    Else
                        'error handlung
                    End If
4

3 に答える 3

2

これには本当に正規表現が必要ですか?String.Substringより効率的です。

Dim quote As Char = """"c
Dim first = printfilePs.IndexOf(quote)
Dim last = printfilePs.LastIndexOf(quote)
Dim partBetweenQuotes = ""
If first <> -1 AndAlso last > first Then
     Dim start = first + 1
     Dim length = printfilePs.Length - start - (printfilePs.Length - last)
     partBetweenQuotes = printfilePs.Substring(start, length)
End If

デモ

于 2013-03-07T13:02:48.133 に答える
1

"prinfile ps ="の後の値を取得したいだけの場合:

printfile ps *= *"([^"]+)";

すべてのKey-Valueカップルを取得する場合:

^([^= ]+) *= *"([^"]+)";$
于 2013-03-07T13:05:54.237 に答える
1

Regexクラスを使用してそれを行う方法は次のとおりです。

Dim PFileRegex As New Regex("^printfile ps\s*=\s*""(?<data>.*\.ps\s*)"";.*$", RegexOptions.Multiline)
Dim PFilematch As Match = PFileRegex.Match(parttext)
If PFilematch.Success Then
    Debug.Print(PFilematch.Result("${data}"))
End If
于 2013-03-07T13:35:58.153 に答える