誰かが作成した不適切なエクスポートからいくつかのテキストをインポートしていますが、以前は二重引用符があった場所に疑問符がいっぱいです。
に置き換えるためにできる正規表現の置き換えはあり?
ます"
か? 例:
?foo? => "foo"
?foo bar? => "foo bar"
foo? => foo?
正規表現を使用して、マーク\?(.*)\?
間の何かを一致させることができます。?
しかし、そのようにすると、例では最長の部分文字列に一致するため、a ?b? ?c? d
結果は になります。a "b? ?c" d
?b? ?c?
\?(.*?)\?
これを解決するには、正規表現で遅延マッチングを使用する必要がありますa "b" "c" d
。
のように 2 つのクエスチョン マークを一緒にできない場合はa ?? b
、 にする必要があります\?(.+?)\?
。そう:
Regex.Replace(text, @"\?(.+?)\?", "\"$1\"");
は$1
、「最初のグループで認識されたもの」、つまり によって認識されたものを意味し.+?
ます。
編集:より高速な代替手段は次のとおりです。
Regex.Replace(text, @"\?([^\?]+)\?", "\"$1\"");
[^\?]
「以外\?
」という意味です。
あなたの正規表現は次のようになります/^\?([^?]+)\?$/
: http://refiddle.com/gmw
試す
s/\?(.*)\?/$1
「?」の間の文字を取得します。