Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Regex查找替换移植应用程序字符串的不同部分_C#_Regex - Fatal编程技术网

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" ) ;