私は同様の質問にbeen asked beforeがあり、答えたことを認識していますが、その答えで提案された解決策を試しても問題は解決しません。正規表現のキャプチャからの改行を除外
複数行の文字列を複数の単一行に区切り、改行を含む空白を整えたExcelマクロを作成したいとします。これは私のコードです:
Sub testRegexMatch()
Dim r As New VBScript_RegExp_55.regexp
Dim str As String
Dim mc As MatchCollection
r.Pattern = "[\r\n\s]*([^\r\n]+?)[\s\r\n]*$"
r.Global = True
r.MultiLine = True
str = "This is a haiku" & vbCrLf _
& "You may read it if you wish " & vbCrLf _
& " but you don't have to"
Set mc = r.Execute(str)
For Each Line In mc
Debug.Print "^" & Line & "$"
Next Line
End Sub
予想される出力:
^This is a haiku$
^You may read it if you wish$
^but you don't have to$
実際の出力:私はRegex101で同じことを試してみたが、これは正しいキャプチャを表示するように表示されます
^This is a haiku
$
^
You may read it if you wish
$
^
but you don't have to$
、それはVBAの正規表現エンジンの奇抜でなければなりません。
アイデア?
うん、* *(= 'SubMatches'が)ここに言葉でキャプチャします。あなたは試合自体をつかんでいます。 '.SubMatches(0)'部分文字列にアクセスしてください。 –
'\ s'を使用しているときは、' \ n'と '\ r'の必要は何ですか?? vbaでは' \ s'は別の扱いですか? – rock321987
Wiktorに感謝の意を表します。答えとして投稿してください。 – jsheeran