私は動作するためにスペースが必要と思われる正規表現のパターンを持っていますが、なぜその理由が分かりません。ここでは私が作ったテスト方法を紹介しますが、それは2つの文字の間の文字を一致させたいのですが、それは他の文字とオプションのスペースで囲まれている場合のみです。なぜこの正規表現にスペースが必要なのですか?
Private Sub RegexTestSub()
Dim testString = "Foo = ASSIGN/ 'Bar'"
Dim patternA = "(?<=Foo([ ]+)?=([ ]+)?ASSIGN\/([ ']+)?)[a-zA-Z0-9-_. ]+(?=([' ]+)?)"
Dim patternB = "(?<=Foo([ ]+)?=([ ]+)?ASSIGN\/ ([ ']+)?)[a-zA-Z0-9-_. ]+(?=([' ]+)?)"
Dim resultA As Match = Regex.Match(testString, patternA)
Dim resultB As Match = Regex.Match(testString, patternB)
End Sub
どちらの試合が、resultB.Value
は「バー」に等しいが、resultA.Value
は単なるスペースです。正規表現のパターンの唯一の違いは、ASSIGN\/
(私が知っている!)の後のスペースです。私はこのスペースをオプションにしたいと思っていました。これは([ ']+)?
が達成すると思ったものです。一致している必要があり
他の例...
Foo=ASSIGN/'Bar'
Bar
Foo = ASSIGN/'Bar'
と一致する必要がありますが(複数のスペースだろう)Foo.Bar.Foo.A1-0
ありがとうございます!これは完全に機能しているようで、読むのがはっきりしています!私が必要とする文字列は、常に単一引用符で囲まれるので、最初のオプションは素晴らしいです。 – Notts90
私はあなたがここで見て回らなくてもできると思います。ちょうどあなたが必要とするデータをキャプチャ '(...) ' –
私は特定のパラメータ(この場合は' Foo')を代入するためのプログラミング言語を解析し、そのパラメータに割り当てられた文字列を取得する(常に単一引用符で囲まれている) ) – Notts90