• ベストアンサー

ワイルドカード処理

ワイルドカード(*と?)の処理を行うプログラムを作っているのですが、何か便利な関数はあるのでしょうか? strstr関数あたりを駆使するしかないのでしょうか? (ファイル名のような文字列の一覧表を持っていて、その中から上位から送られてきたワイルドカードを含む文字列に合致する文字列を探し出すルーチンを作っています。蛇足かと思いますが、*は0文字以上の任意の文字、?は1文字の任意の文字です。) 宜しくお願いします。

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

  • ベストアンサー
  • toysmith
  • ベストアンサー率37% (570/1525)
回答No.2

ファイル名正規表現は特例的に簡単に作れます。 この程度なら作っちゃってもいいかも。 共立出版「ソフトウェア作法」(ISBN4-320-02142-8 C3041)に正規表現処理のアルゴリズム解説があります。 アルゴリズム集というより詳細設計の本です。

参考URL:
http://kyoritsu-pub.topica.ne.jp/bookhtml/0306/000604.html

その他の回答 (1)

  • terra5
  • ベストアンサー率34% (574/1662)
回答No.1

regcomp,regexecという正規表現を使うための関数がありますが、お使いの処理系にあるかどうかはわかりません(^^; unixには昔からあるやつで、POSIXにも含まれていますが。 まあ、gnuのライブラリにはあるので,ソースが入手可能ですけど。

参考URL:
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/regex.3.html

関連するQ&A

  • C言語 strstr()に似た関数は?

    C言語で、strstr()は、文字列内の先頭か指定文字列を検索しますが、 文字列内の最後尾から指定文字列を検索する関数はありませんか?

  • ファイルからの文字列を検索

    テキストファイルを読み込み、任意の文字列を探すプログラムを作成しました。 これを改良し、ワイルドカード入力をした場合、*をa~zとA~Zに変えて、それぞれで検索しようとしています。ワイルドカードにはいる文字は1文字です。 「a*」と検索すれば「aa」、「ab」~「az」、「aA」、「aB」~「aZ」と検索し、合致したものを出力したいのです。 回答が欲しいとは思いますが、ヒントや考え方など何でも結構ですので、お力添えをお願いいたします。

  • VC2005でInputBox関数?

    VisualC++2005を使っていますが、VisualBasicのようなInputBox関数はあるのでしょうか? プログラムが止まり、メッセージを出して、 文字列入力し、OKボタンを押すと、 入力した文字列を使ってプログラムが流れる 有れば便利だと思うのですが・・・

  • 文字列から文字列を検索するプログラム

    現在、C言語を学習しています。 文字列から文字列を検索する関数に「strstr]がありますが、自作関数として自分で作成する方法を考えております。 文字列から文字を検索する事は出来たのですが、文字列を検索するシーケンスがわかりません。 有識者の方、御教授よろしく御願い致します。

  • 複数の表を切り替えて抽出する方法について(Excel)

    エクセルで、複数の表を切り替えて抽出する方法を色々考えてみました。はじめは、Lookup関数を使いましたが、特定の文字に対となるものを抽出するにはIndex関数とMatch関数の組み合わせがいいことが分かりました。しかし、複数の表を切り替えるとなると、やっぱり、If関数の階層化となってしまいます。名前の定義を使って切り替えようかとも思いましたが、途方にくれてしまいました。ユーザー関数の方がいいのかも??って感じで、考えがまとまりません。どなたか?詳しい方、お知恵を拝借できないでしょうか?宜しくお願いします。イメージとしては、 =選択抽出(表の名前,検索列名前,検索文字列,抽出列名前)ってな感じで、表の名前を変更することにより任意の表を選べ、検索列名前、を変更することにより表の中の任意の列を選べる、(抽出も同じ)てな感じで、任意の表の任意の列を検索し、任意の列から抽出するってな、万能なユーザー関数を模索しています。 ヒントだけでもいいので、拝借お願い致します。 (イメージは、エクセルの名前定義を使う方法が正しいものとしての仮定での話です)宜しくお願い致します。

  • あったらいいなと思う、C文字列ライブラリ関数

    みなさんC言語で開発してきた中で、ライブラリとして用意されてたら いいなと思った事のある関数・処理としてどのようなものがありますでしょうか。 特定業務向けの話でなく、汎用的な処理ででも結構です。 例えば、いつも思うのが、なんで文字列A中の文字列Bを、文字列Cに置換する 関数ってなんでないんだろう、などですかね。 (そりゃstrstr、strcatなど既存ライブラリ関数を使いまわせば書けますが...)

  • python 文字列処理

    たとえばlink[j]に文字列 a,b が入っている場合、その文字列をsplitでわけ、関数で使う文字列とする場合を考えました。 (1) [cols1, cols2] = link[j].split(',') actor = scene.Actor(cols1) しかし、関数Actorは()内が英数字なら""、日本語ならば''がついた文字列でければ動きません。 link[j]はファイルx.txtから読み取った文字列です。 actor = scene.Actor("a") では実行が可能です。 ファイルx.txtの内容を "a","b" にしても(1)のプログラムでは実行不可でした。 この場合プログラムをどのようにかえればいいのでしょうか。 文章もプログラムの腕もなくてもうしわけないのですが、ご回答できるかた、どうぞよろしくおねがいします。

  • 16進数の文字列をアスキーコード表を使用して変換

    16進数の文字列をアスキーコード表を使用して変換したいと思っています。 例えば 97 98 = ab 99 100 101 = cde 何か良い関数はありますか? また、文字列長も任意で変わるので、文字列長に応じて任意で 変換したいと思っています。 やはりマクロが必要ですか?

  • Perlの文字列処理関数?

    Perl5.8も視野にいれた、便利な文字列関数を探しています。 trim rtrim ltrimを行う関数ですが、こういうものは自作するべきでしょうか? VBやPHPには標準であるようですが、Perlは文字コードを備えた一般的なものは 存在するのでしょうか?

    • ベストアンサー
    • Perl
  • 検索/行列関数のことでお聞きします。セルに他の表のデータを出力させる関

    検索/行列関数のことでお聞きします。セルに他の表のデータを出力させる関数を組みましたが、時々違うデータが出力されてしまいます。どなたかお教えください。 =IF(C1="",LOOKUP(K1,表1!C1:C10,表1A1:A10),VLOOKUP(C1,表1!A1:C10,2,0)) (1)C1が空欄ならK1のデータと同じものを表1のC列より探し合致したデータのA列のデータを出力する。(2)C1にデータが入力されていればそのデータと合致するものを表1の左端の列(A列)より探し合致したデータのB列のデータを出力する。 (1)の作業がいまひとつで違うデータを出力してしまうことがある、LOOKUPの性質上やむ終えない感じのためVLOOKUPのように確実にデータを返す関数を探しています。VLOOKUPのようにA列ではなくC列を参照してデータを探す関数(参照するれてを指定できる)を探しています。 長くなりましたがよろしくお願いします。

専門家に質問してみよう