質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

Q&A

解決済

1回答

1085閲覧

正規表現:「"abc//efg"」を「"abc/a/efg"」にしたい

Satoshi71

総合スコア25

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

0グッド

0クリップ

投稿2017/12/17 08:23

C#で正規表現を使って高速で文字列処理をしたいと思っていますが、
「"abc//efg"」を「"abc/a/efg"」にする方法がわかりません。
※ダブルクォーテーションで括られている//という文字の中に文字を入れるという方法です。

以下のように捕まえることはできるのですが、第2引数をどうするかで悩んでいます。
text = Regex.Replace(text, "".+?//.+?"", ここをどうするか?);

更に、「"abc//efg"」を「"abcefg"」にする方法も同じくわからず悩んでいます。
text = Regex.Replace(text, "".+?//.+?"", "$&");
だと、//は消えませんので...。

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

C# は知りませんが,キャプチャーを使えばいいでしょう。

"(\".+?/)(/.+?\")" で検索すると,( ) に当たる部分文字列がキャプチャーされます。置換文字列の構成において,$1 は一つ目の ( ) でキャプチャーされた文字列,$2 は二つ目の ( ) でキャプチャーされた文字列の参照になるので,第二引数を $1a$2 にすればよいのだと思います。

「思います」というのは C# の Regex の仕様を知らずに軽く調べただけで書いているからです。

二つ目の問題も ("\".+?)//(.+?\")" で検索して $1$2 に置換すればいいですね。

投稿2017/12/17 08:59

scivola

総合スコア2108

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Satoshi71

2017/12/17 09:05

ありがとうございました!できました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問