2

プログラムに次の形式の文字列入力があります。

con*.cc

これを正規表現 con.*.cc で表現したいと思います。

Cプログラム内でこれを行うにはどうすればよいですか? 私が使用できるsedのようなものはありますか?

4

5 に答える 5

4

正規表現を完全に使用するのではなく、グロビングだけが必要だと思います。Linux で実行している場合は、glob関数を使用できます。よりポータブルな方法があると思いますが、オフハンドの方法は知りません。

于 2009-03-09T19:42:56.140 に答える
2

正規表現の照合にPCREを使用できます。実際の式は、(他の文字列と同様に) char 配列として格納できます。

于 2009-03-09T19:41:59.513 に答える
1

その正規表現で正確に何をしたいですか?コード内に既にある一連の文字列を検索する場合、正規表現ライブラリを使用する必要があります。C は正規表現をネイティブにサポートしていません。gcc のマニュアルを参照してください

于 2009-03-09T19:43:21.037 に答える
1

このページでは、C の POSIX 正規表現サポートを実装する <regex.h> ヘッダーについて説明します。これを使用するには、次のようにします。

#include <sys/types.h>
#include <regex.h>

それらはかなり素晴らしく、操作が簡単ですが、@Chickenchaが別の回答で言ったように、真の正規表現マッチングを行っていないだけで、ファイル名をグロブしただけのように見えます. 誰も持っていなかったので、Cは実際に正規表現をサポートしていることを指摘したいと思いました。

于 2009-03-10T10:25:42.210 に答える
0

プログラム内から sed を使用します。

  1. フォーク()
  2. 子プロセスに stdin/stdout を設定する
  3. 子の exec(sed s/X/Y/) (または必要な操作)
  4. 親はデータを sed にプッシュし、sed からデータを読み取ります
  5. 親は完了時に sed を取得します
于 2009-03-09T20:24:12.593 に答える