我想知道从哪里开始在正则表达式中执行以下替换:
"e.g:"
)"E.G:"
)之间的任何内容
醇>
以示例:
string m = "stringishere";
变为
string m = "STRINGISHERE";
提前致谢,
凯尔
答案 0 :(得分:2)
您的问题中未说明,因此我将为单行报价提供可能的解决方案:
public static void Main(string[] args)
{
const string MatchQuotedExp = @"(\x22|\x27)((?!\1).|\1{2})*\1";
Regex regex = new Regex(MatchQuotedExp);
string input = @"""Foo"" Bar ""Foo"" Bar ""Foo""!
""Bar"" Foo ""Bar"" Foo ""Bar""!";
foreach (Match match in regex.Matches(input))
{
input = Regex.Replace(
input,
match.Value,
match.Value.ToUpperInvariant());
}
Console.WriteLine(input);
}
对于多行引用支持,请在创建RegexOptions.Singleline
时添加regex
。
支持多行,输入:
// "Foo" Bar "Foo" Bar "Foo"!
// "Bar" Foo "Bar" Foo "Bar"! "Multi
// line" blah
将转换为:
// "FOO" Bar "FOO" Bar "FOO"!
// "BAR" Foo "BAR" Foo "BAR"! "MULTI
// LINE" blah
另请注意,如果引文的 ANY 内部包含奇数"
,则会爆炸。 :)
答案 1 :(得分:2)
由于.cs文件可能包含
等注释 // Look, lonely double quote: " Take that, Regex parser!
你所要求的将是很难与Regex。
答案 2 :(得分:0)
假设你的字符串里面没有"
。
Regex r = new Regex('"[^"]+"');
string output = r.Replace(input,m=>m.Groups[0].ToUpper());