C# 正则表达式只匹配一次
我有短信C# 正则表达式只匹配一次,c#,regex,C#,Regex,我有短信 1 00:00:03,837 --> 00:00:07,170 Text1 2 00:00:08,875 --> 00:00:10,968 Tex2 3 00:00:11,010 --> 00:00:13,843 Text3 我想这样做 00:00:03,837 --> 00:00:07,170 Text1 00:00:08,875 --> 00:00:10,968 Tex2 00:00:11,010 --> 00:00:13,843 Te
1
00:00:03,837 --> 00:00:07,170
Text1
2
00:00:08,875 --> 00:00:10,968
Tex2
3
00:00:11,010 --> 00:00:13,843
Text3
我想这样做
00:00:03,837 --> 00:00:07,170
Text1
00:00:08,875 --> 00:00:10,968
Tex2
00:00:11,010 --> 00:00:13,843
Text3
我试过这个:
Match match = Regex.Match(loadedText, @"\d{1,4}\r\n");
if (match.Success)
{
for (int i = 0; i < match.Groups.Count; i++)
{
loadedText= loadedText.Replace(match.Groups[i].Value, "");
}
rtbLoaded.Text = loadedText;
}
所以只有一次。。。我做错了什么?组是regexp中
()
中的部分,而不是单个匹配项
因此,在regexp(abc)(def)
中,第一组是abc
,第二组是def
不要迭代组(您只有默认组!),您需要多次匹配。可能使用内置的替换方法,而不是您在那里执行的此Replace
hack。尝试此替换规则:
string result = Regex.Replace(originalString, @"(?<=(\r\n|^))(\d+\r\n)", "");
string result=Regex.Replace(原始字符串,@“(?00:00:07170\r\nText1\r\n\r\n2\r\n00:00:08875-->00:00:10968\r\nTex2\r\n\r\n3\r\n00:00:11010-->00:00:13843\r\nText3\r\n\r\n”;
Console.WriteLine(Regex.Replace(输入,@)(?)?
string result = Regex.Replace(originalString, @"(?<=(\r\n|^))(\d+\r\n)", "");
string input = "1\r\n00:00:03,837 --> 00:00:07,170\r\nText1\r\n\r\n2\r\n00:00:08,875 --> 00:00:10,968\r\nTex2\r\n\r\n3\r\n00:00:11,010 --> 00:00:13,843\r\nText3\r\n\r\n";
Console.WriteLine(Regex.Replace(input, @"(?<=(\r\n|^))(\d+\r\n)", ""));