正则表达式以@ ... @ .... @

时间:2017-01-13 14:29:36

标签: c# regex

如何从此替换以下字符串:

"Hello @app@username@, my name is @app@name@."

"Hello <span>@app@username@</span>, my name is <span>@app@name@</span>."

有大量的应用程序变量@app@variable@

2 个答案:

答案 0 :(得分:6)

此代码在每个变量周围添加<span></span>个标记。

string input = "Hello @app@username@, my name is @app@name@.";
string result = Regex.Replace(input, "[@][a-z@]+[@]", s => "<span>" + s.Value + "</span>");

<强>更新

正如WiktorStribiżew所提到的,甚至有一种更短的写作方式:

string result = Regex.Replace(input, "[@][a-z@]+[@]", "<span>$&</span>");

答案 1 :(得分:-1)

您可以使用模式:

@[A-Za-z]+@[A-Za-z]+@

并将其替换为:

string input = "Hello @app@username@, my name is @app@name@.";

string result = Regex.Replace(input, "@[A-Za-z]+@[A-Za-z]+@", match => "<span>" + match.Value + "</span>");

请注意,如果匹配项始终采用以下格式:@app@someotherword@,您可以使用正则表达式:

@app@[A-Za-z]+@

在@WiktorStribiżew评论中,您还可以使用$&反向引用来执行替换:

Regex.Replace(input, "@[A-Za-z]+@[A-Za-z]+@", "<span>$&</span>");