Это часть строки "21xy5". Я хочу вставить «*», окруженный пробелами между цифрой и буквой, буквой и цифрой, буквой и буквой. Я использую этот шаблон регулярных выражений "\ d [a-z] | [a-z] \ d | [a-z] [a-z]", чтобы найти индексы, в которые я собираюсь вставить строку "*". Проблема заключается в том, что когда регулярное выражение OR (|) в строке 21xy5 соответствует значению 21-x | x-y | y-5, когда первое условие 21-x выполнено успешно, второе x-y не проверяется, а третье успешно. Таким образом, у меня 21 * xy * 5 вместо 21 * x * y * 5. Если входная строка похожа на эту xy21, то x-y success, а затем у меня есть x * y21. Проблема в том, что логическое ИЛИ не жадное.
Regex reg = new Regex(@"\d[a-z]|[a-z]\d|[a-z][a-z]" );
MatchCollection matchC;
matchC = reg.Matches(input);
int ii = 1;
foreach (Match element in matchC)
{
input = input.Insert(element.Index + ii, " * ");
ii += 3;
}
return input;