• 締切済み

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

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/1415)
回答No.1

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

関連するQ&A

  • VBA:HTML から文字列を取得したい

    エクセルのVBAを使ってHTMLの操作をしようとしています。 実際のHTMLではなくて恐縮ですが、以下のようなテーブルがあります。 <tr class="hoge"> <td>ABC</td> <td>fuga</td> <td>piyo</td> <td>テキスト:いろは</td> <td>hogehoge</td> </tr> 四つ目のtd要素に含まれている文字列「いろは」で、目的のtr要素を特定し(「いろは」はHTML中一回しか使われません)、一つ目のtd要素にある「ABC」を取得して変数に収め、利用したいと考えています。 このクラス名「hoge」を用いたtr要素は複数あって、かつその並び順は新しいデータの更新・追加に従って変わるので、添え番で指定することが出来ません。 このとき、GetElementsByClassName でクラス名「hoge」のエレメントコレクションを取得するところまでは判りますが、その後どういった処理を行えば希望する結果が得られるか思いつきません。 どういう方法を使えばよいか、なんらかヒントをご教示頂ければ助かります。 なにとぞよろしくお願い致しますm(__)m

  • 文字列中の任意の位置の文字取得

    VB6の勉強をしております。 OSはWindowsXPです。 すごく簡単な質問なんですが、C言語のように、文字列中の任意の位置を指定する方法はVB6には無いのでしょうか? 例) C言語:str[1] 添え字で指定出来る VB6:???  思いつく方法はMidを利用し、任意の位置の文字を取得する方法なんですが、それしか無いのでしょうか? 以上、よろしくお願いいたします。

  • 特定の文字列を取り出したい

    秀丸エディタの正規表現などを使えば可能だと思うのですが、 あるファイルに以下のような記述があったとして <table><tr> <td>abc1@abc.jp</td> <td>abc2@abc.jp</td> <td>abc3@abc.jp</td> <td>abc4@abc.jp</td> </tr></table> タグの中身の文字列だけを取り出して abc1@abc.jp abc2@abc.jp abc3@abc.jp abc4@abc.jp というテキストを作りたいのですが、 何か良い方法はありますでしょうか?

  • 正規表現による文字列の取得について

    こんにちわ。 正規表現でマッチした箇所を変数に取り込むためにはどのようにしたらよいのでしょう? HTMLのデータの中から情報を取り込みたいのですが、 PERLの場合は if($_ =~ />データ([0-9\.]+)<\/FONT>/){$value=$1;} のようなかんじでやれば「データ2005」という文字列から「2005」と取得できたものをvbではどのように記述すればいいのかわかりません。 VB初心者のため、あまりマトを得ていないかもしれませんが、よろしくお願いします。 説明不足があれば補足いたします。 参考サイトなどでも結構です。

  • 正規表現。指定文字列を抜き出したい

    指定文字列を抜き出したいのですが、どうすればよいでしょうか。 ▼抜き出したい文字列  先頭 /hoge/  最後 .html 任意の文字列/hoge/piyo/puyo/pipipi.html任意の文字列 任意の文字列/hoge/puko/pu.html任意の文字列 任意の文字列/hoge/pa/pa.html任意の文字列 上記例でいくと、 /hoge/piyo/puyo/pipipi.html /hoge/puko/pu.html /hoge/pa/pa.html を抜き出したいです。

    • ベストアンサー
    • PHP
  • VBAもしくはVB6の正規表現でHTMLの切り抜き

    入れ子になったタグの相手を探したいと思います。 abcテーブルとxyzテーブルは入れ子になっていますが、 それぞれのtableタグの相手の終了タグを探して 取り込みたいのですが、どうやればいいでしょうか? <table id="abc" width="200" border="1"> <tr> <TD>A</td> <TD>B <table id="xyz" width="200" border="1"> <tr> <td>J</td> <td>K</td> <td>L</td> </tr> <tr> <td>M</td> <td>N</td> <td>O</td> </tr> <tr> <td>P</td> <td>Q</td> <td>R</td> </tr> </table></td> <td>C</td> </tr> <tr> <td>D</td> <td>E</td> <td>F</td> </tr> <tr> <td>G</td> <td>H</td> <td>I</td> </tr> </table>

  • PHP 正規表現による文字列の抜き出しについて

    PHP 正規表現による文字列の抜き出しについて 初歩的な質問で申し訳ありません。いくつかググったのですが、それでも自分の求める形を見つけられず質問させて頂きました。 「あいうえおかきくけこさいすせそ $abc12345678 $99999 たちつてと」 このような文字列の時に、 『$abcで始まって半角スペースで終わる所までの部分を抜き出す』には、 どのように記述すれば宜しいでしょうか。 (上記の文字列の場合は、「$abc12345678」を抜き出したいことになります。) よろしくお願いします。

    • ベストアンサー
    • PHP
  • C#で正規表現

    C#で、HTML形式で書かれた文字列から情報取得したいと思っています。 その際に使う文字列判別のための正規表現についてご助言ください。 現在、Regex.Replaceで、<>カッコに囲まれた部位は削除、残りの文字列を解析して情報取得しています。 これをHTMLのテーブル、つまり<td></td>※で囲まれた文字列を取得するよう仕様変更したいと思っています ※実際は<td width=・・・・>などとなります。 このサイトのページ最下部のC#ソースにありますような書き方をしようと思っています。 http://dobon.net/vb/dotnet/string/regexmatch.html 以上が、質問概要です。 私が正規表現を書いたとき分からなかった点は、 1.”(半角のダブルクォーテーション)の扱い・指定方法 2.<td></td>で囲まれた、というような表現の具体的な書き方 3.<td></td>内には<font>などのさらに<>で囲まれた部位が混入、その対処方法 参考までに、処理対象となるサイトはこちらになります。 http://www.traders.co.jp/stocks_data/data/brand_move/brand_move.asp 以上よろしくお願いいたします。

  • 特定の文字列を挿入

    テーブルのセルに特定の文字列を挿入する方法は御座いませんか? 例えば、 HTMLファイル <html> <head> </head> <body> <table> <tr><td> (1) </td><td> (2) </td></tr> <tr><td> (3) </td><td> (4) </td></tr> </table> </body> </html> とあった場合 JavaScriptファルには (1)に挿入する内容 (2)に挿入する内容 (3)に挿入する内容 (4)に挿入する内容 を書いてHTMLファイルに書き出しをしたいのです。 document.write('');を使って書き出す方法は知っていますが、指定した場所に貼り付けたい場合複数ファイルが必要になりますよね? それでは不便なので、JavaScriptファルは外部化で1つのファイルにし、指定箇所に文字列を挿入する方法を教えてください。 printを使えばいいんでしょうか?

  • [C#.net]正規表現による指定文字数の文字列分割

    visual studio 2005 C#で 指定文字数による文字列分割をしたいのですが 何とか正規表現で一発で書けないかと考えております。 指定文字数による文字列分割は、ちょっと言い方が分からないので、下の例をみていただければ、と思います。 例えば指定文字数が2文字の場合 "あいうえお"を以下のような配列で取得したいです。 [0]"あい" [1]"いう" [2]"うえ" [3]"えお" 例えば指定文字数が3文字の場合 [0]"あいう" [1]"いうえ" [2]"うえお" これを [0]"あい" [1]"うえ" というような分割はできるのですが、上記のような重複した感じでの取得ができません。 MatchCollection mc = Regex.Matches("あいうえお", ".."); ちょっと言い方が下手で分かりにくいかもしれませんが、よろしくお願いいたします。

専門家に質問してみよう