• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VB.NETの正規表現をVBAで記述するには)

VB.NETの正規表現をVBAで記述するには

0KWave_IDの回答

回答No.2

後読みと後方参照を混同していないでしょうか。 質問者は後読みができることを期待していますが 回答者は後方参照ができると回答しています。 後読み(前方一致ともいいます)と後方参照は違います。

参考URL:
http://www4.ocn.ne.jp/~kaerume/k2e/regex_3.html
yam2012
質問者

補足

0KWave_IDさん ご指摘ありがとうございます。 ご指摘の通り「後読み」を期待しています。 なお、sora1515さんの回答に対する補足説明(投稿日時 - 2014-06-22 10:40:26)の中で、誤って「後方参照」という表現を使ってしまったのですが、すべて「後読み」の誤りです。sora1515さんのところで補足説明を修正・追加ができなかったので、ここで訂正させていただきました。 よろしくお願いします。

関連するQ&A

  • .NET のスマートな正規表現の記述の仕方

    VB8 (2005)で、正規表現の書き方ですが、抽出する場合は、 以下のようにしましたが、抽出せず、単にマッチしたかとうが If文で判別する方法が知りたいです。 Imports System.Text.RegularExpressions '正規表現 Dim dat As String = "TEST 01" Dim ptn As String 'パターン Dim r As Regex ' Dim dv As String '部分 '抽出 ptn = "^TEST ([0-9]+)$" r = New Regex(ptn, RegexOptions.IgnoreCase) For Each m As Match In r.Matches(dat) dv = m.Groups(1).Value() MsgBox("抽出=[" & dv & "]") Next あと、上のようにFor文で回していますが、Globalでなく、今回は1つだけの抽出で、しかも1つだけの()なので、これをFor文を使わずに直接取得する書き方はあるのでしょうか? それ以前に、.NETの正規表現の書き方が一般的でなければ、ご指導お願い致します。

  • VB.NETの正規表現の書き方を教えてください

    いつもお世話になっております。 また正規表現がわからなくなってしまったのですが、 お助け願えないでしょうか。 Strの中にはこのようなものが入っています。 Str="あいうえお=====かきくけこ=====さしすせそたちつてと=====まみむめも=====なにぬねの" Dim r As Regex Dim m As Match Dim StrR As String r = New Regex("=====.+=====") m = r.Match(Str) While m.Success StrR = m.Value m = m.NextMatch() End While 順番に StrR="=====かきくけこ=====" StrR="=====まみむめも=====" を取得したいのですが、 上記のような書き方だと、 StrR=====かきくけこ=====さしすせそたちつてと=====まみむめも=====" を取得してしまいます。 回数の指定など色々試してはみたのですが、 どうしても目的のとおりにすることができず困っておりまして、 書き方をご教示頂きたくよろしくお願い致します。

  • CSVのRegexでの分割

    期待する結果が得られる正規表現を教えて下さい。 環境はVS2008,FW3.5です。 Module Module1 Sub Main() Dim sBuf As String = """abc,xyz"",""123,456"",777,333" Dim sPtm As String sPtm = "\s*(""(?:[^""]|"""")*""|[^,]*)\s*," Dim oRegex As System.Text.RegularExpressions.Regex = New System.Text.RegularExpressions.Regex(sPtm) Dim sLineData As String() = oRegex.Split(sBuf) For iLoop As Integer = 0 To sLineData.Length - 1 System.Console.WriteLine("{0} : {1}", iLoop, sLineData(iLoop)) Next End Sub End Module 実行結果 0 : 1 : "abc,xyz" 2 : 3 : "123,456" 4 : 5 : 777 6 : 333 期待する結果 0 : "abc,xyz" 1 : "123,456" 2 : 777 3 : 333

  • VB.NETの正規表現の検索を教えてください。

    VB.NETの正規表現で文章中(HTMLソース)から番号を抜き取りたいのですが、 先頭の1つだけしか見つけられません。 htmlソース内に 番号:10000 番号:20000 番号:30000 番号:40000 という文字があるので、その後半の10000や20000を取得したいです。 下記のコードで実行すると、10000が4つ出力されてしまいます。 良い方法をご教示頂きたいです。よろしくお願いいたします。 Dim pagedata As String  <---htmlソース Dim reg As Regex reg = New Regex("番号:(?<datano>.+)", RegexOptions.Compiled) Dim DataNo As String m = reg.Match(pagedata) While m.Success = True DataNo = reg.Match(pagedata).Result("${datano}") m = m.NextMatch() Console.WriteLine(DataNo) End While

  • 正規表現で<BR>の行を除外したいです。 VB.NET

    VB.NETで正規表現を使って2つの文字列に囲まれた部分を 取得したいのですが、文字列の先頭と末尾の部分の<BR>の行と 空行を削除したいです。 具体的には対象の文字列が ”ABC <BR> <BR> あいうえお <BR> かきくけこ <BR> さしすせそ <BR> <BR> <BR> XYZ” となっていた場合に ”あいうえお <BR> かきくけこ <BR> さしすせそ” を取得したいです。 現在このようになっています。 Public STR As String Sub Form1_Load Dim sr As New System.IO.StreamReader("c:\0.html", system.Text.Encoding.Default) STR = sr.ReadToEnd TextBox2.Text = "(?<data>.+?)" End Sub Sub Button1_Click  Dim A As String = "ABC"  Dim Z As String = "XYZ"  Label1.Text = A & TextBox2.Text & Z  Dim r As New Regex(Label1.Text, RegexOptions.Singleline)  Dim m As System.Text.RegularExpressions.Match  Try  TextBox1.Text = r.Match(STR).Result("${data}")  Catch ex As Exception  Console.WriteLine("Error")  End Try End Sub <BR>が<br>や<Br><bR>< br >などにも対応したりと 条件がいろいろありすぎて色々試したのですが、 どうしても分かりませんでした。 申し訳ございませんが、お助け頂ければ幸いです。

  • VB2005のRegexで全角文字のマッチ

    VB2005のRegexで、インターネットのソースコードを取得し”次の10件"というキーワードの位置を取得しようとしていますが、どうもソースコードの時点で、全角文字(2バイト文字)が認識されていないようです。どうすれば、マッチできるでしょうか?教えてください。 仮に、下記のルーチンに、Debug.Print(inputString)を入れて表示させてみると、全角の表示がされていません。 よろしくお願いいたします。 Sub DumpHrefs(ByVal inputString As String) Dim r1 As Regex Dim m1 As Match r1 = New Regex("次の10件≫") m1 = r1.Match(inputString) While m1.Success Debug.WriteLine("次の10件" & " at " & m1.Groups(1).Index.ToString())  m1 = m1.NextMatch()  End While End Sub

  • VB.NETの正規表現の書き方を教えてください。

    下のような改行を含む文字列から、1や2を指定してデータ1、データ2を取得したいです。 決まった文字列(変更のない)はNAMEのみで、 取得したい文字列ですが、例えば2を指定した場合は 具体的には NAME=b12345 A=b12345 B=b98765 C=bXYZ このような内容を取得したいです。 -------------------------------------- abcde aiueokakikukeko ここに改行を含むいろな文字列がある場合とない場合があります。 asdfghj NAME=a12345 A=a12345 B=a98765 C=aXYZ ここに改行を含むいろな文字列がある場合とない場合があります。 NAME=b12345 A=b12345 B=b98765 C=bXYZ ここに改行を含むいろな文字列がある場合とない場合があります。 NAME=c12345 A=c12345 B=c98765 C=cXYZ ここに改行を含むいろな文字列がある場合とない場合があります。 -------------------------------------- 正規表現の部分は現在はこのように書いてあります。 Dim i As Integer = 2 Dim reg As Regex Dim m As Match Dim Target As String reg = New Regex("", RegexOptions.Compiled Or RegexOptions.Multiline) m = reg.Match(Data) If m.Success = True Then Target = reg.Match(Data).Result("${Target}") End If Console.WriteLine(Target) 数量の指定をすれば何とかなりそうだと思ったのですが、 試行錯誤しても思うように取り出すことが出来ず 申し訳ないのですが、適切な書き方をご教示頂ければ幸いです。

  • VB.NETのメモリ領域について

    VB.NETのメモリ領域について 以下の(1)~(12)の変数のために、 スタック領域、静的領域、ヒープ領域のどこのメモリが使われるか教えてください。 Class Sample   Dim a As Integer '(1)   Dim b As String = "BBB" '(2)   Shared c As Integer '(3)   Shared d As String = "DDD" '(4)   Sub X()     Dim f As Integer '(5)     Dim g As String = "GGG" '(6)     Static h As Integer '(7)     Static i As String = "III" '(8)   End Sub   Shared Sub Y()     Dim k As Integer '(9)     Dim l As String = "LLL" '(10)     Static m As Integer '(11)     Static n As String = "NNN" '(12)   End Sub End Class それぞれこんな認識で合ってますか? スタック領域 (1)(5)(9) スタック領域にポインタ+ヒープ領域に実体 (2)(6)(10) 静的領域 (3)(7)(11) 静的領域にポインタ+ヒープ領域に実体 (4)(8)(12)

  • VB.NETで正規表現を教えてください。URL文字を取得

    VB.NETなのですが、 htmlソースを変数に入れて、その中からURLを抽出して、 1つずつ保存していくという動作をさせたいのですが、 どうしてもURLを一つずつ取得することができません。 Dim r As Regex Dim m As Match Dim JpgFile As String r = New Regex("http://.+\.jpg") m = r.Match(html) If m.Success = False Then   Else JpgFile = m.Value ここで1つずつ保存 End If 現在、ここまで出来たのですが、 これだと、変数html内に複数のjpgのURLがあると 最初のURLの1文字目から、最後のURLの末尾までを一度に 取得してしまいます。 URLの文字列はhttp://で始まっていて、終わりは・・・.jpg" になっていたり、"がなかったりします。 >で閉じる前に同じタグ内にWidthなどサイズを指定している場合もあります。 また、上記のようにタグ内に書かれていなくて、クリッカブルリンクになっていないURLの場合もありそれも取得したいです。 一つずつ取得する方法や一度に配列に読み込む方法などがありましたら、 ご教示頂けると助かります。 よろしくお願い致します。

  • VB.NETのデリゲートについて

    VB.NETのデリゲートについて質問です。 以下のプログラムなのですが、 デリゲート型をインスタンス化しているところで、コンストラクタにパラメータを渡していますが、 そのコンストラクタはどこに定義されているのでしょうか。 (AddressOf t1.Ohayou)というパラメータが渡されていますが、このパラメータを受け取っているコンストラクタがどれなのかが分かりません。 ご教示よろしくお願いいたします。 Delegate Sub Myprint(ByVal s As String) Module Module1 Sub Main() Dim t1 As Test1 = New Test1() Dim t2 As TEst2 = New Test2() Dim d As Myprint = New Myprint(AddressOf t1.Ohayou) d.Invoke("VB太郎") d = New Myprint(AddressOf t2.Konbanwa) d.Invoke("VB太郎") End Sub End Module Class Test1 Sub Ohayou(ByVal s As String) Console.WriteLine("おはようございます。{0}です。", s) End Sub End Class Class Test2 Sub Konbanwa(ByVal s As String) Console.WriteLine("こんばんわ。{0}です。", s) End Sub End Class