我的方法中有这个片段:
MatchCollection words = Regex.Matches("dog cat fun toy", @"\w\w\w.\w?");
foreach (Match match in words)
{
Console.WriteLine(match);
}
我希望看到类似的东西:
狗c 猫f
有趣的是
但是程序想出了:
狗c 有趣的是
根据我的理解,它跳过第二次出现,因为它的一部分是先前发生的。但我仍然希望看到它。我应该如何纠正我的片段?
答案 0 :(得分:0)
你可以试试这样的事情
var regX = new Regex(@"\w\w\w.\w?");
string pattern = "dog cat fun toy";
int i = 0;
while (i < pattern.Length)
{
var m = regX.Match(pattern, i);
if (!m.Success) break;
Console.WriteLine(m.Value);
i = m.Index + 1;
}
答案 1 :(得分:0)
即使它不是一个通用解决方案,但与您相关,下面的代码片段可以完成这项工作:
string _input = "dog cat fun toy";
string[] _arr = _input.Split(' ');
string _out = String.Empty;
for (int i = 0; i < _arr.Length-1; i++)
{
if (_arr[i].Length == 3) { _out+=_arr[i]+" "+_arr[i+1].Substring(0,1)+";";}
}
其中字符串_ out
包含由&#34; ;
&#34;分隔的所有匹配项(或任何其他char)。或者,您可以将输出发送到控制台:
string _input = "dog cat fun toy";
string[] _arr = _input.Split(' ');
for (int i = 0; i < _arr.Length-1; i++)
{
if (_arr[i].Length == 3) {Console.WriteLine(_arr[i]+" "+_arr[i+1].Substring(0,1));}
}
希望这可能会有所帮助。