我需要以下情况的帮助:
private string _endPointPattern = @"X(?<name>[a-zA-Z0-9-:]*)X";
现在,如果我想成为一个团体,我就得到它:
match.Groups["name"]
现在让我们假设还原情况:
我想在命名参数中插入字符串“Jerry”以获取XJerryX。 我怎么能用Regex做到这一点?
答案 0 :(得分:1)
假设X
是一个正则表达式模式的占位符(否则只使用String.Replace
),这应该有效:
var yourInputString = "XX";
var replacement = "Jerry";
Regex.Replace(yourInputString,
@"(X)(X)",
String.Format(@"$1{0}$2", replacement));
编辑:发表评论后(您可能想要更新问题):
您需要更新正则表达式,如下所示:
private string _endPointPattern =
@"(?<prefix>X)(?<name>[a-zA-Z0-9-:]*)(?<suffix>X)";
然后使用:
var yourInputString = "XX";
var replacement = "Jerry";
var result = Regex.Replace(yourInputString,
_endPointPattern,
String.Format(@"${{prefix}}{0}${{suffix}}", replacement));
答案 1 :(得分:0)
问题不是很明确,但下面的代码适用于多种情况:XX => XJerryX
,XBobbyX => XJerryX
。但是XXavierX => XJerryXJerryX
。
string output = Regex.Replace(text, "(?<=X).*?(?=X)", "Jerry");
答案 2 :(得分:0)
decPL您的答案最接近我需要的解决方案。不过我做得更简单:
private const string EndPointFormat = @"X{0}X";
private const string Regex = @"(?<name>[a-zA-Z0-9-:]*)";
private string _endPointPattern = string.Format(EndPointFormat, Regex);
string endPoint = string.Format(EndPointFormat, "Jerry");
现在我可以使用_endPointPattern从Regex中获取名称并以字符串格式将其插回。