正規表現

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ウズ

正規表現

#1

投稿記事 by ウズ » 16年前

いつもお世話になっています。

C言語で正規表現を使いたいのです。

regex.hのregexecを使えばできるのはわかったのですが、

肝心の正規表現がよくわかりません。

使用可能文字が0-9 a-z ! ? [ ] _ で、

条件として「_」が2個連続(1個or3個以上はok)は×
[/url]でかこまれたものは×

というものなのですが、

一度で表現してみるもうまくいかず、

わけて表現してみようとしても、ちゃんと判断できず、

困っております。。

以下、試してみた表現です。。



使用可能文字をチェック
"[0-9a-zA-z!\?\[\]_]+"
→コンパイル時点でwarningがでました

[/url]で囲まれるをチェック
"^[.*$]"
→コンパイルはとおりましたが、引数に入力した値をチェックにかけているのですが、
 引数に [任意の文字] と指定するとうまく動きませんでした。。

「_」で2連続をチェック
"^_{2}"
→「_」3以上の連続でもひっかかりました。


正しい表現を、どなたか教えてください。

御津凪

Re:正規表現

#2

投稿記事 by 御津凪 » 16年前

> 使用可能文字をチェック
> "[0-9a-zA-z!\?\[\]_]+"
> →コンパイル時点でwarningがでました

A-z になってますが、それが原因ではないでしょうか。

> [/url]で囲まれるをチェック
> "^[.*$]"
> →コンパイルはとおりましたが、引数に入力した値をチェックにかけているのですが、
>  引数に [任意の文字] と指定するとうまく動きませんでした。。

"\[.*\]" で、いいのではないでしょうか?

> 「_」で2連続をチェック
> "^_{2}"
> →「_」3以上の連続でもひっかかりました。

"(?<!_)__(?!_)" で、出来ると思います。
(regex でうまくいくかどうかわかりませんが、鬼車で確認しました)

ウズ

Re:正規表現

#3

投稿記事 by ウズ » 16年前

> 御津凪様
返答ありがとうございます。
regexのせいなのか、ネットで調べたりした内容でも
書いてあるとおりに動かない場合もありました。
私の環境の場合、メタ文字の取り消しは「\\」のようですが、
それでも打ち消せない文字もあったり…。
教えていただいた表現でも試してみます。
ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る