VBで正規表現を使おうとしています。
asda(AAAA)jspfidjfpsd(BBBB);padpo;mdas(CCCC)adsdas
という文字列があったとして、その中の括弧で囲まれたAAAAとBBBBとCCCCを取得する正規表現はどうなりますか?
たとえば\(.*\)とすると最初の(と最後の)で括られている、(AAAA)jspfidjfpsd(BBBB);padpo;mdas(CCCC)全部が引っかかってしまいます。
どうかお助けください。
よろしくお願いします。
> VBで正規表現を使おうとしています。
どの正規表現ライブラリをお使いでしょうか?
フリーソフトの JRE32.DLL、VBScript の RegExp オブジェクト、
.NET の Regex クラスなど、幾つかの候補がありますよね。
> 括弧で囲まれたAAAAとBBBBとCCCCを取得する正規表現はどうなりますか?
「VBScript + RegExp オブジェクト」だとしたら、こんな感じ。
source = "asda(AAAA)jspfidjfpsd(BBBB);padpo;mdas(CCCC)adsdas"
Set re = New RegExp
re.Global = True
re.Pattern = "\([^\(\)]*(?=\))"
s = ""
For Each m In re.Execute(source)
s = s & Mid(m.Value, 2) & vbCrLf
Next
MsgBox s
「.NET の Regex クラス」だとしたら、こんな感じ。
Option Strict On
Option Explicit On
Imports System
Imports System.Text
Imports System.Text.RegularExpressions
Module Module1
Sub Main()
Dim source As String = "asda(AAAA)jspfidjfpsd(BBBB);padpo;mdas(CCCC)adsdas"
Dim r As New Regex("(?<=\()[^\(\)]*(?=\))", RegexOptions.Multiline)
For Each m As Match In r.Matches(source)
Console.WriteLine(m.Value)
Next
End Sub
End Module
ツイート | ![]() |