C# と VB.NET の質問掲示板
ASP.NET、C++/CLI、Java 何でもどうぞ
C# と VB.NET の入門サイト
Re[1]: 正規表現での置換について
(過去ログ 115 を表示中)
掲示板トップ
C# と VB.NET 入門
新規作成
利用方法/規約
トピック表示
ランキング
記事検索
過去ログ
[トピック内 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
-