• ベストアンサー

正規表現について VB6

VB6で正規表現(Microsoft VBScript Regular Expression 5.5を使っているのですが、 (1) No001の場合、001を取得 (2) Noの場合は空文字を取得 したいのですが、どうすればよいのでしょうか? re.Pattern = "^No(.+)$" この場合、(1)の場合、マッチしますが(2)でマッチしません。 正規表現に詳しい方、VB6で正規表現をよく使う方、教えて下さい。

  • hdkoa
  • お礼率0% (1/117)

質問者が選んだベストアンサー

  • ベストアンサー
  • deadline
  • ベストアンサー率63% (1239/1943)
回答No.1

"No(.+)$"だと、"No"の後に任意の文字が1個以上無いとマッチしません。 "No"とマッチさせるなら、"No(.*)$"です。 『WindowsユーザのためのLinux入門:正規表現』(←Linuxの解説ですが、基本は一緒なので) http://tonetsutomu.com/tone/linux/Reference/RegularExp.htm

その他の回答 (1)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

re.Pattern = "No((\d*)|$)$" といった具合では Noの後ろの任意の文字(列)ということなら \dを .に代えてください

関連するQ&A

  • 正規表現 Microsoft VBScript Regular Expression 5.5

    Microsoft VBScript Regular Expression 5.5を参照設定でVBから使ってます。 このRegExpオブジェクトがどうも挙動不審。 Dim REFind As New RegExp REFind.Pattern = "そのた" REFind.IgnoreCase = True REFind.Global = True REFind.MultiLine = True If REFind.Test(moji) Then hogehoge .... というところで、まずぜんぜん "そのた" という文字列が入った文字列にマッチしません。 REFind.Pattern = "の" とかやると、"そのた\ほげほげ" とかにはマッチしますが、"ほげほげ そのた" とかにはマッチしません。 内部で日本語には対応してないんでしょうか? Replaceメソッドで置換文字列としてUNICODE依存のハートマークなどを入れてみましたが、ちゃんとハートに置換してくれました。 だから内部処理はUNICODEだと思うのですが。 それとも、そもそもVBScriptとか書いてあるものをVBから使うのが間違い? ちなみにこのプログラムはFindFirstFileWから受け取ったファイルを正規表現で絞って、さらに正規表現を使って一括でファイル名の変更やコピーなどを行うプログラムです(全然できてませんが)。 表示にはMSForms2.0を使い、正規表現の部分を除けば、ちゃんとFindFirstFileWから受け取ったハートマーク付きのファイルを表示しています。 特にUNICODE依存の文字に置換しようとか思ってるわけじゃないですが。 なので、表示部などのバグではないと思います。 この挙動不審の原因が分かる方、または挙動不審でない正規表現を扱える(できればUNICODE)オブジェクトライブラリなどをご存じの方いらっしゃったらお願いします。 --- W2K+VB6

  • VB2010の正規表現

    VB2010の正規表現についての質問です。 ファイル名に複数のドット(ピリオド)が含まれる時や、複数の拡張子がある時でも、 一番最後にある拡張子だけを取り出したいのです。 System.Text.RegularExpressions.Regex("正規表現") で正規表現を指定していますが、 例えば、『T.M.Revolution.m3u』の場合は、『.m3u』だけを取り出したいので、 ("[.].*$") とすると、マッチする部分が『.M.Revolution.m3u』となる為、 ("([.].*){1}$") に、試しに変更してみましたが、失敗してしまいました。 知っている方、 『上記の書き方だと何故ダメなのか』 と、 『この場合の正しい正規表現』 を教えていただけませんか? あと、正規表現ではない代替案などが有れば、是非それも教えて頂きたいです。 よろしくお願いします。

  • 正規表現を教えてください。

    正規表現を教えてください。 C#で正規表現を用いた文字列検索を勉強中なのですが、うまくマッチさせることができません。教えていただけないでしょうか。 検索対象の文字列は下のようになります。 キーワード;値; 文字列中に該当するキーワードが存在する場合に、その値を取得するプログラムを考えています。しかし、私の正規表現では2つ目の「;」を検出してしまい、キーワードのみを取得することが出来ずに困っています。 見当違いの表記をしているとは思うのですがどなたかお助けください。 match = Regex.Match(line, "^(.*);"); C#初心者なものです。

  • 正規表現

    例えば下のような文字列があって、{~} を正規表現で最初の一つをマッチさせたいのですが、{~} が複数あると最初の一つだけを取り出すことができません。 あああああ{aaaaa}いいいいい{bbbbb}ううううう パターンは /{.*}/ こんな感じでやっているのですが結果は、 {aaaaa}いいいいい{bbbbb} となってしまいます。 正規表現に詳しい方教えてください。

  • 正規表現について

    いま.Netで正規表現にチャレンジしているのですが、どこが問題なのか分からず、投稿させていただきました。 正規表現のパターンです。 \\[Cc]\[(?<$0>[0-9]+),(?<$1>[0-9]+),(?<$2>[0-9]+)\] で、マッチさせたい文字列は、 \C[255,255,255] です。「[255,255,255]」の数字の部分は、一桁から三桁までの数字であれば何でもOKです。 マッチしないことは、http://jsregex.com/を使って調べました。 どうぞよろしくお願いします。

  • 正規表現で分からないことがあります。

    正規表現で数字の間に「,」が入る場合と入らない場合があるのですが、どう書けばいいのでしょうか? 例えば、 1 1,2 0,1 122 等様々なパターンがある時、これらをヒットさせるにはどうすればいいのでしょうか? \d+だけだと、コンマのところでバラバラになってしまいます。 一回で全てをマッチさせる方法はありますか? 使用しているのはPHPです、よろしくお願いします。

    • ベストアンサー
    • PHP
  • 正規表現について

    VB6ですが・・・ '次のようなコードがあって <!-- と --> に囲まれる文字列を抜き出したのですが 'どのようなパターンマッチを書けばいいのでしょうか? 'HTMLのコメントのみを抜き出したいと思っています。 Const s = "<!--今日-->" _ & "<!--僕は--><!--正規表現を--><!--勉強します-->" Dim x As RegExp Dim v As match Set x = New RegExp x.Pattern = "パターン" x.Global = True For Each v In x.Execute(s) Debug.Print v.Value Next

  • VBS、正規表現でドメインを取りたい。

    VBScriptで開発をしています。 文字列からドメインだけを取得したくて、ネットで調べて以下のような コードを書いてみましたが、うまくいきません。 正規表現がうまくマッチしてこないようなのですが、初心者故よくわからず…。 おかしい点、修正すべき点を教えていただけないでしょうか。 Dim reg Set reg = Server.CreateObject("VBScript.RegExp") reg.Pattern = "/^[httpsfile]+:\/{2,3}([0-9a-zA-Z\.\-:]+?):?[0-9]*?\//i" Dim testUrl testUrl = "http://www.test.co.jp/test.html" Set Matches = ObjRegExp.Execute(testUrl) Dim Matches Dim Match Dim StrTest For Each Match in Matches StrTest = Match.value Next

  • 非決定性オートマトンから正規表現への変換について

    NFA(非決定性オートマトン)からregular expression(正規表現)への、変換方法がよく分かりません。 正規表現からNFAを作成するアルゴリズムは大丈夫なのですが、その逆が分からないのです。 検索して調べたものの・・・。 どこか分かりやすいWEBサイトなどありましたら 教えていただけないでしょうか?

  • VBの正規表現について

    初めまして。 VB.NETについてなんですが以下のHTMLを正規表現で取得する事は可能ですか? <TD class=ct><A href="【項目1】">【項目2】</A></td> <TD class=ct>【項目3】</td> <TD class=ct>【項目4】</td> <TD class=ct>【項目5】</td>       <TD class=ct>【項目6】</td>       <TD class=ct>【項目7】</td> 項目1から項目7を正規表現で取得する事は可能でしょうか?

専門家に質問してみよう