C# Regex在报价之间替换
我想知道从哪里开始在regex中执行以下替换:C# Regex在报价之间替换,c#,.net,regex,C#,.net,Regex,我想知道从哪里开始在regex中执行以下替换: 读取文件(.cs文件) 将引号(”例如:“)之间的任何内容替换为大写版本(”例如:“) 举例来说: string m = "stringishere"; 变成 string m = "STRINGISHERE"; 提前感谢, Kyle假设字符串中没有“ Regex r = new Regex('"[^"]+"'); string output = r.Replace(input,m=>m.Groups[0].ToUpper()); 假设
”例如:“
)之间的任何内容替换为大写版本(”例如:“
)string m = "stringishere";
变成
string m = "STRINGISHERE";
提前感谢,
Kyle假设字符串中没有
“
Regex r = new Regex('"[^"]+"');
string output = r.Replace(input,m=>m.Groups[0].ToUpper());
假设字符串中没有
“
Regex r = new Regex('"[^"]+"');
string output = r.Replace(input,m=>m.Groups[0].ToUpper());
您的问题中没有说明,因此我将为单线报价提供一个可能的解决方案:
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);
}
对于多行报价支持,请在创建regex
时添加RegexOptions.Singleline
通过多行支持,输入:
// "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
另外请注意,如果任何报价单中包含奇数个
“
”。您的问题中没有说明这一点,因此我将为单行报价单提供一个可能的解决方案:
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);
}
对于多行报价支持,请在创建regex
时添加RegexOptions.Singleline
通过多行支持,输入:
// "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
还要注意的是,如果任何报价单中包含奇数个
“
”,则会放大: 因为.cs文件可能包含如下注释
// Look, lonely double quote: " Take that, Regex parser!
您所问的问题将很难用Regex来完成。因为.cs文件可能包含如下注释
// Look, lonely double quote: " Take that, Regex parser!
你的要求将很难用正则表达式完成。谢谢,我更改了片段,因为我忘记了一些重要的事情,但它为我解决了我需要的问题。一旦我有了投票权,我会+1。谢谢,我改变了作品,因为我忘记了一些重要的事情,但它让我找到了我需要的东西。我一有投票权就会+1。