C# 取一段正则表达式并将其设置为字符串
有没有办法从正则表达式中提取一部分?假设我有一个匹配的C# 取一段正则表达式并将其设置为字符串,c#,regex,C#,Regex,有没有办法从正则表达式中提取一部分?假设我有一个匹配的 \s*(string)\s*(.*\()\s*(\d*)\)\s*;?(.*) 我想这样改变它 Regex.Replace(line, @"\s*(string)\s*(.*\()\s*(\d*)\)\s*;?(.*)", "$1 $2($3) // $4", RegexOptions.IgnoreCase); 我有没有办法自己获取$4并将其设置为某个字符串变量 假设正则表达式匹配为:string(55);评论 在这种情况下,我希望只
\s*(string)\s*(.*\()\s*(\d*)\)\s*;?(.*)
我想这样改变它
Regex.Replace(line, @"\s*(string)\s*(.*\()\s*(\d*)\)\s*;?(.*)", "$1 $2($3) // $4", RegexOptions.IgnoreCase);
我有没有办法自己获取$4
并将其设置为某个字符串
变量
假设正则表达式匹配为:string(55);评论
在这种情况下,我希望只获取单词
注释
,并将其设置为字符串,而不必使用string.Split函数。不过,最后,我只想得到括号之间的数字。是的,如果我理解正确的话:
var re = new Regex(@"\s*(string)\s*(.*\()\s*(\d*)\)\s*;?(.*)");
var match = re.Match(input);
if (match.Success)
{
int i = match.Groups[4].Index;
int n = match.Groups[4].Length;
input = input.Substring(0, i) + replacementString + input.Substring(i + n);
}
Replace
方法有一个函数,它接受一个MatchEvaluator
委托:
string pattern = "...";
string result = Regex.Replace(line, pattern, m =>
{
int digits = 0;
string comment = m.Groups[4].Value; // $4
int.TryParse(m.Groups[3].Value, out digits); // $3
return string.Format("{0} {1}({2}) // {3}",
m.Groups[1].Value, m.Groups[2].Value, digits, comment);
}, RegexOptions.IgnoreCase);
希望这能有所帮助。不知道你在问什么。你能提供一个输入和输出的例子吗?我做了一个编辑,有更多的解释。一个期望输出的例子将非常有用。