我需要一些建议.假设我有以下字符串:Read Variable
我想找到一个字符串像这样的文本的所有作品,让所有的人都像下面这样:Variable = MessageBox.Show.作为附加示例:
"Read Dog" --> "Dog = MessageBox.Show"
"Read Cat" --> "Cat = MessageBox.Show"
Run Code Online (Sandbox Code Playgroud)
你能帮助我吗?我需要在C#中使用RegEx快速建议.我认为这是一项涉及通配符的工作,但我不知道如何使用它们......而且,明天我需要这个用于学校项目...谢谢!
编辑:这是我到目前为止所做的,它不起作用:Regex.Replace(String, "Read ", " = Messagebox.Show").
你可以这样做
string ns= Regex.Replace(yourString,"Read\s+(.*?)(?:\s|$)","$1 = MessageBox.Show");
Run Code Online (Sandbox Code Playgroud)
\s+ 匹配1到多个空格字符
(.*?)(?:\s|$)匹配0到多个字符,直到第一个空格(即\s)或直到到达字符串的末尾(即$)
$1 代表第一个被捕获的群体即 (.*?)
您尝试的问题是,它无法知道应该在您的变量之后插入替换字符串.假设有效变量名称包含字母,数字和下划线(可以方便地与之匹配\w).这意味着,任何其他字符结束变量名称.然后你可以匹配变量名称,捕获它(使用括号)并将其放在替换字符串中$1:
output = Regex.Replace(input, @"Read\s+(\w+)", "$1 = MessageBox.Show");
Run Code Online (Sandbox Code Playgroud)
请注意,\s+匹配一个或多个任意空格字符.\w+匹配一个或多个字母,数字和下划线.如果您想将变量名称限制为仅字母,则可以在此处进行更改:
output = Regex.Replace(input, @"Read\s+([a-zA-Z]+)", "$1 = MessageBox.Show");
Run Code Online (Sandbox Code Playgroud)
最后请注意,在C#中,建议将正则表达式编写为逐字符串(@"...").否则,你将不得不双重逃避一切,以便反斜杠进入正则表达式引擎,这真的会降低正则表达式的可读性.
你可能想澄清你的问题......但是这里有:
如果你想后到下一个字匹配"阅读"正则表达式中使用Read (\w*),其中\w是单词字符类*是贪婪的匹配运算符.
如果你想匹配后一切"阅读"正则表达式中使用Read (.*)$,其中.将匹配所有字符,$表示行尾.
使用正则表达式,您可以使用替换$1 = MessageBox.Show为$ 1将引用第一个匹配的组(由括号表示).
完整代码:
replacedString = Regex.Replace(inStr, @"Read (.*)$", "$1 = MessageBox.Show");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16648 次 |
| 最近记录: |