- PR -

ある文字からある文字までを検索

投稿者投稿内容
hirotan
常連さん
会議室デビュー日: 2004/07/20
投稿数: 41
投稿日時: 2005-11-30 15:23
いつもお世話になっております。

正規表現での質問なのですが、"【"と"】"に囲まれた文字を拾いたいのですが、
下記の方法で試してみましたが、うまくできませんでした。
使用言語はC#です。

Regex reg = new Regex("([【][^【】]+[】])*");
Match m = reg.Match("【abc】【xyz】");

こんな感じで拾いたいのですが、
m.Groups[0].Value ⇒ 【abc】
m.Groups[1].Value ⇒ 【xyz】

下のようになってしまいます
m.Groups[0].Value ⇒ 【abc】【xyz】
m.Groups[1].Value ⇒ 【xyz】


初心者の質問で申し訳ありませんが、
どういう記述をすればよいのでしょうか
よろしくお願いします。
明智重蔵
大ベテラン
会議室デビュー日: 2005/09/05
投稿数: 127
投稿日時: 2005-11-30 15:44
最小マッチ(ものぐさマッチ)を使って

(【.+?】)(【.+?】)
とか
cats
大ベテラン
会議室デビュー日: 2002/11/29
投稿数: 221
お住まい・勤務地: 東京
投稿日時: 2005-11-30 16:12
m.Groups[1].Value とm.Groups[2].Value に入っていませんか?

0 は、全マッチングだったと思います。
hirotan
常連さん
会議室デビュー日: 2004/07/20
投稿数: 41
投稿日時: 2005-11-30 18:34
catsさん、明智さん、ありがとうございます。

私、勘違いをしておりました。
同じものを複数マッチングさせたかったのですが、その場合は
m.Matchesメソッドを使用すればよかったみたいです。

結果、以下のようにすればやりたいことができました。
Regex reg = new Regex("([【][^【】]+[】])"); // ←「*」をはずしました
MatchCollection m = reg.Matches("【abc】【xyz】");

おかげで解決することができました。
ありがとうございました。
また何かありましたらよろしくお願いします。
hirotan
常連さん
会議室デビュー日: 2004/07/20
投稿数: 41
投稿日時: 2005-11-30 18:34
catsさん、明智さん、ありがとうございます。

私、勘違いをしておりました。
同じものを複数マッチングさせたかったのですが、その場合は
m.Matchesメソッドを使用すればよかったみたいです。

結果、以下のようにすればやりたいことができました。
Regex reg = new Regex("([【][^【】]+[】])"); // ←「*」をはずしました
MatchCollection m = reg.Matches("【abc】【xyz】");

おかげで解決することができました。
ありがとうございました。
また何かありましたらよろしくお願いします。
hirotan
常連さん
会議室デビュー日: 2004/07/20
投稿数: 41
投稿日時: 2005-11-30 18:34
catsさん、明智さん、ありがとうございます。

私、勘違いをしておりました。
同じものを複数マッチングさせたかったのですが、その場合は
m.Matchesメソッドを使用すればよかったみたいです。

結果、以下のようにすればやりたいことができました。
Regex reg = new Regex("([【][^【】]+[】])"); // ←「*」をはずしました
MatchCollection m = reg.Matches("【abc】【xyz】");

おかげで解決することができました。
ありがとうございました。
また何かありましたらよろしくお願いします。
hirotan
常連さん
会議室デビュー日: 2004/07/20
投稿数: 41
投稿日時: 2005-11-30 18:34
catsさん、明智さん、ありがとうございます。

私、勘違いをしておりました。
同じものを複数マッチングさせたかったのですが、その場合は
m.Matchesメソッドを使用すればよかったみたいです。

結果、以下のようにすればやりたいことができました。
Regex reg = new Regex("([【][^【】]+[】])"); // ←「*」をはずしました
MatchCollection m = reg.Matches("【abc】【xyz】");

おかげで解決することができました。
ありがとうございました。
また何かありましたらよろしくお願いします。
hirotan
常連さん
会議室デビュー日: 2004/07/20
投稿数: 41
投稿日時: 2005-11-30 18:34
catsさん、明智さん、ありがとうございます。

私、勘違いをしておりました。
同じものを複数マッチングさせたかったのですが、その場合は
m.Matchesメソッドを使用すればよかったみたいです。

結果、以下のようにすればやりたいことができました。
Regex reg = new Regex("([【][^【】]+[】])"); // ←「*」をはずしました
MatchCollection m = reg.Matches("【abc】【xyz】");

おかげで解決することができました。
ありがとうございました。
また何かありましたらよろしくお願いします。

スキルアップ/キャリアアップ(JOB@IT)