C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: 正規表現での置換について


(過去ログ 115 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■67766 / inTopicNo.1)  正規表現での置換について
  
□投稿者/ たなえ (1回)-(2013/08/31(Sat) 10:44:34)

分類:[.NET 全般] 

2013/08/31(Sat) 10:46:45 編集(投稿者)
2013/08/31(Sat) 10:46:39 編集(投稿者)

Windows7 Vs2010 C#

お世話になります。
C#で文字列置換の実装しております。

00*///*//abc という文字列があります。

ここで最初にでてくる */// の部分を削除したいのです。

00*///*//abc → 00*//abc と変換したいです。

変換元の文字列は、/の数が場合により変化します。たとえば

00*///////*/abc などです。この場合は 00*/abc に変換したいです。

以下のようにしてみました。

Regex reg=new Regex(@"(\*\/+){1}?");
string s=reg.Replace(@"00*///*//abc", "");

上記の結果、sには "00abc" が格納されました。ほしいのは 00*//abc なのですが

どのようにすればうまく変換されるでしょうか。

C#というよりは正規表現自体の質問になってしまいますが、他でサイトが見つからず
こちらで質問させていただきました。

お手数ですが、どちら様かご教示いただけると助かります。

よろしくお願いします。


引用返信 編集キー/
■67767 / inTopicNo.2)  Re[1]: 正規表現での置換について
□投稿者/ shu (375回)-(2013/08/31(Sat) 10:56:52)
No67766 (たなえ さん) に返信

正規表現
(?<bef>[^*]*)\*/+(?<aft>[^/])

置換文字列
${bef}${aft}

これでどうでしょう?

引用返信 編集キー/
■67768 / inTopicNo.3)  Re[2]: 正規表現での置換について
□投稿者/ たなえ (2回)-(2013/08/31(Sat) 11:12:52)
2013/08/31(Sat) 11:15:39 編集(投稿者)

No67767 shu 様
さっそくのご回答、誠にありがとうございます。

非常に複雑な記載をしないといけないのですね。
驚きました。

ご教示いただいたもので記載のパターンについては変換できたのですが、
*/の階層が増えたときに、目的の文字列にはなりませんでした。

00*/*//*///abc  → 00*//*///abc が欲しいが、00*//abc となる。

PGでは
Regex reg = new Regex(@"(?<bef>[^*]*)\*/+(?<aft>[^/])");
string s=reg.Replace(@"00*/*//*///abc", @"${bef}${aft}");
と実装しました。


誠に申し訳ありませんが、このように増えることを想定した場合、
どのように記載すればいいでしょうか。

お手数をおかけし申し訳ありませんが、よろしくお願いいたしますm(__)m。

引用返信 編集キー/
■67769 / inTopicNo.4)  Re[3]: 正規表現での置換について
□投稿者/ shu (376回)-(2013/08/31(Sat) 11:34:11)
No67768 (たなえ さん) に返信
> PGでは
> Regex reg = new Regex(@"(?<bef>[^*]*)\*/+(?<aft>[^/])");
aftの[^/]を[^/].*
にした場合どうでしょう?
引用返信 編集キー/
■67771 / inTopicNo.5)  Re[4]: 正規表現での置換について
□投稿者/ たなえ (3回)-(2013/08/31(Sat) 11:43:09)
2013/08/31(Sat) 11:53:34 編集(投稿者)

No67769 shu 様
お世話になります。

ご教示いただいた内容で目的の文字列を取得できました。

befやaftというのはその間に含まれるものを変換するための
キーワードにしたものだったのですね(ちょっとニュアンス的
に違うかもですが)。

最初は全く理解できませんでしたが、なんとなく見えてきました。

大変助かりました。ありがとうございましたm(__)m。


解決済み
引用返信 編集キー/
■67772 / inTopicNo.6)  Re[1]: 正規表現での置換について
□投稿者/ 魔界の仮面弁士 (321回)-(2013/08/31(Sat) 11:59:05)
No67766 (たなえ さん) に返信
> ここで最初にでてくる */// の部分を削除したいのです。

こういうことでしょうか?

return new Regex(@"\*/+").Replace(value, "", 1);


下記のパターンしかテストしていません。

00*///*//abc => 00*//abc
00*///////*/abc => 00*/abc
00*/*//*///abc => 00*//*///abc
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -