C# Regex查找替换移植应用程序字符串的不同部分
如果我有一行代码:C# Regex查找替换移植应用程序字符串的不同部分,c#,regex,C#,Regex,如果我有一行代码: String s = "\t\tgets(buf);"; 需要将其转换为 s = "\t\tbuf"; 在Regex.Replace()方法中,我将使用什么正则表达式模式来摆脱它 假设buf是一个随机字符串,则gets()并保留buf。我还想保留该字符串中可能存在的其他格式字符等 很抱歉编辑了这个问题。 我用过: 但是,如果get(buf)行被其他括号或 格式如 s= "/rgets (buf)"; OR s= "(gets (buf))/n"; 因此,理想情况下,我
String s = "\t\tgets(buf);";
需要将其转换为
s = "\t\tbuf";
在Regex.Replace()
方法中,我将使用什么正则表达式模式来摆脱它
假设buf
是一个随机字符串,则gets()
并保留buf
。我还想保留该字符串中可能存在的其他格式字符等
很抱歉编辑了这个问题。
我用过:
但是,如果get(buf)行被其他括号或
格式如
s= "/rgets (buf)"; OR s= "(gets (buf))/n";
因此,理想情况下,我只想去掉get()留下的'buf'和行中的其他内容,稍后再对其进行处理。
谢谢您可以使用string类中的几个方法来实现这一点:
s = string.Concat(s.Replace("gets(", "").Replace(");", ""), " = Console.ReadLine();");
Regex
功能强大,但有时可能有些过火
如果您确实觉得需要,请在问题中添加更多细节。谢谢。然后编写适当的正则表达式
string s = "\t\tgets(buf);" ;
string s1 = Regex.Replace( s , @"^(\t\t)gets\(.+)\)(;)" , @"$1$2 = Console.Readline()$3" ) ;
人们可能会注意到,
gets(3)
接受一个计算结果为char*
的任意表达式。该表达式不一定是标识符,也不一定是可以在赋值的左侧使用的东西(就像C语言中的lval
。向我们展示您尝试过的正则表达式。是的,谢谢您指出这一点。我正在写一些东西来将一些C函数移植到C#,所以我已经说明了这一点。
string s = "\t\tgets(buf);" ;
string s1 = Regex.Replace( s , @"^(\t\t)gets\(.+)\)(;)" , @"$1$2 = Console.Readline()$3" ) ;