• 締切済み

正規表現で任意の文字列が含まれない文字列の取得

VB6/VBAでお願いします。 <tr> <td>あいうえお</td> <td>かきくけこ</td> </tr> ここで、<td>と</td>に挟まれた文字列を取得しようとするのですが、 ABCとXYZ両方が取得できます。任意の文字列を含まない指定はどう すればいいでしょうか? この場合、「きくけ」を含まない「あいうえお」を取得したいと思い ます。

みんなの回答

回答No.3

回答2です。 正規表現は難しいですね。「<td>[^き]*[^く]*[^け]*</td>」でいけるかと思ったら「かきaくbけこ」にもヒットしてしまいます。 で、よく探してみたらありました。 http://funcchan.blog16.fc2.com/blog-entry-19.html#strdeny 「"<td>((?!きくけ).)*?</td>"」でいけそうです。VBSでの確認です。 個人的には「ある文字列を含まない」正規表現は、よく確認しないと抜けがありそうで恐いと思いました。

tss_jp
質問者

お礼

ありがとうございます。 それでいけますね。 はじめたところでなかなかよくわからないのですが・・ ところで、最初に(<td).*?</td> と書きましたが、 秀丸エディタの正規表現検索だと <td.*?</td> でも (<td).*?</td>でも ヒットしますが VB、正確にはVBAですがこれだと上の括弧なしには ヒットしません。この括弧にはどういう意味がある のでしょうか?

回答No.2

>ここで、<td>と</td>に挟まれた文字列を取得しようとするのですが、 >ABCとXYZ両方が取得できます。 ということは、「<td>と</td>に挟まれた文字列を取得」することはできたのでしょうか? 差し支えなければそれを示してもらえないでしょうか。

tss_jp
質問者

補足

ありがとうございます。 挟まれて文字列は次ので取得できています。 "(<td).*?</td>" よろしくお願いします。

  • nda23
  • ベストアンサー率54% (777/1416)
回答No.1

単純な文字列ならInStr関数でも検出できます。 InStr(被検索文字列, 検索文字列) → 0なら検索文字列を含まない。 正規表現を使う方法もあります。 Dim Reg Set Reg = CreateObject("VBScript.RegExp") Set Reg.Pattern = "きくけ" Reg.Test(被検索文字列) → Falseなら検索文字列を含まない。

関連するQ&A