C# 替换为通配符

C# 替换为通配符,c#,regex,C#,Regex,我需要一些建议。假设我有以下字符串:readvariable 我想在一个字符串中找到所有这样的文本片段,并使它们如下所示:Variable=MessageBox.Show。作为传统的例子: "Read Dog" --> "Dog = MessageBox.Show" "Read Cat" --> "Cat = MessageBox.Show" 你能帮我吗?我需要一个在C#中使用正则表达式的快速建议。我认为这是一项涉及通配符的工作,但我不知道如何很好地使用它们。。。还有,我明天要去学

我需要一些建议。假设我有以下字符串:
readvariable
我想在一个字符串中找到所有这样的文本片段,并使它们如下所示:
Variable=MessageBox.Show
。作为传统的例子:

"Read Dog" --> "Dog = MessageBox.Show"
"Read Cat" --> "Cat = MessageBox.Show"
你能帮我吗?我需要一个在C#中使用正则表达式的快速建议。我认为这是一项涉及通配符的工作,但我不知道如何很好地使用它们。。。还有,我明天要去学校做一个项目。。。谢谢

编辑:这是我到目前为止所做的,但它不起作用:
Regex.Replace(String,“Read”,“=Messagebox.Show”)
您可以这样做

string ns= Regex.Replace(yourString,"Read\s+(.*?)(?:\s|$)","$1 = MessageBox.Show");
\s+
匹配1到多个空格字符

(.*?(:\s |$)
将0与多个字符匹配,直到第一个空格(即
\s
)或字符串结束(即
$


$1
表示第一个捕获的组,即
(.*)

尝试的问题是,它无法知道替换字符串应该插入变量之后。假设有效的变量名包含字母、数字和下划线(可以方便地与
\w
匹配)。也就是说,任何其他字符都以变量名结尾。然后,您可以匹配变量名,捕获它(使用括号),并将其放入替换字符串中,使用
$1

output = Regex.Replace(input, @"Read\s+(\w+)", "$1 = MessageBox.Show");
请注意,
\s+
匹配一个或多个任意空白字符<代码>\w+匹配一个或多个字母、数字和下划线。如果要将变量名限制为仅限字母,请在此处进行更改:

output = Regex.Replace(input, @"Read\s+([a-zA-Z]+)", "$1 = MessageBox.Show");


最后请注意,在C#中,建议将正则表达式编写为逐字字符串(
@…
)。否则,您将不得不对所有内容进行双重转义,以便反斜杠能够传递到正则表达式引擎,从而真正降低正则表达式的可读性。

您可能需要澄清您的问题。。。但这里有:

如果要匹配正则表达式中“Read”之后的下一个单词,请使用
Read(\w*)
其中
\w
是单词字符类,
*
是贪婪匹配运算符

如果要匹配正则表达式中“Read”之后的所有内容,请使用
Read(.*)$
其中
将匹配所有字符,
$
表示行尾

对于任一正则表达式,都可以使用替换的
$1=MessageBox.Show
,因为$1将引用第一个匹配的组(由括号表示)

完整代码:

replacedString = Regex.Replace(inStr, @"Read (.*)$", "$1 = MessageBox.Show");

是的,你说得对。这就是我所做的:Regex.Replace(字符串,“Read”,“=Messagebox.Show”)。好的,为什么不呢?我已经编辑了这个问题!谢谢你的建议。@m.buettner:我已经找到了我想要的这个问题(regex是一个噩梦,我想要现成的答案,就像大多数人一样)。请不要让人们自己去寻找正则表达式!!:)是的,成功了!非常感谢。你能给我解释一下吗?我将在8分钟内接受答案(stackoverflow告诉我必须等待…)谢谢!再等2分钟:)您应该注意,如果有尾随空间,这将删除尾随空间。你可能想用前瞻来代替
(?=\s |$)
(?!\s)
@m.buettner我想他不想用白色space@Fake.It.Til.U.Make.It不,您的正则表达式包括匹配中的空格(如果有)。因此,它也将被删除。如果你使用前瞻,它将不会成为比赛的一部分,并且将保留在字符串中。我已经得到了答案。但是谢谢你关于使用逐字字符串的建议。这很有帮助@瓦伦丁拉杜是的,是假的。它。直到你制造。它比我快了半分钟,但在把所有的解释都打好之后,我不想把答案扔掉;)。谢谢你的努力。我有很多例子要做,所以我肯定也会用到你的技巧,我不必再问其他问题了。谢谢是的,谢谢你的澄清。我不知道那1美元的事。这就是我要找的。谢谢