- 締切済み
正規表現で任意の文字列が含まれない文字列の取得
VB6/VBAでお願いします。 <tr> <td>あいうえお</td> <td>かきくけこ</td> </tr> ここで、<td>と</td>に挟まれた文字列を取得しようとするのですが、 ABCとXYZ両方が取得できます。任意の文字列を含まない指定はどう すればいいでしょうか? この場合、「きくけ」を含まない「あいうえお」を取得したいと思い ます。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- cistronezk
- ベストアンサー率38% (120/309)
回答2です。 正規表現は難しいですね。「<td>[^き]*[^く]*[^け]*</td>」でいけるかと思ったら「かきaくbけこ」にもヒットしてしまいます。 で、よく探してみたらありました。 http://funcchan.blog16.fc2.com/blog-entry-19.html#strdeny 「"<td>((?!きくけ).)*?</td>"」でいけそうです。VBSでの確認です。 個人的には「ある文字列を含まない」正規表現は、よく確認しないと抜けがありそうで恐いと思いました。
- cistronezk
- ベストアンサー率38% (120/309)
>ここで、<td>と</td>に挟まれた文字列を取得しようとするのですが、 >ABCとXYZ両方が取得できます。 ということは、「<td>と</td>に挟まれた文字列を取得」することはできたのでしょうか? 差し支えなければそれを示してもらえないでしょうか。
補足
ありがとうございます。 挟まれて文字列は次ので取得できています。 "(<td).*?</td>" よろしくお願いします。
- nda23
- ベストアンサー率54% (777/1416)
単純な文字列ならInStr関数でも検出できます。 InStr(被検索文字列, 検索文字列) → 0なら検索文字列を含まない。 正規表現を使う方法もあります。 Dim Reg Set Reg = CreateObject("VBScript.RegExp") Set Reg.Pattern = "きくけ" Reg.Test(被検索文字列) → Falseなら検索文字列を含まない。
お礼
ありがとうございます。 それでいけますね。 はじめたところでなかなかよくわからないのですが・・ ところで、最初に(<td).*?</td> と書きましたが、 秀丸エディタの正規表現検索だと <td.*?</td> でも (<td).*?</td>でも ヒットしますが VB、正確にはVBAですがこれだと上の括弧なしには ヒットしません。この括弧にはどういう意味がある のでしょうか?