Тема: Регулярные выражения, вложенные (()()())
Господа гуру!
Подскажите как переписать регулярное выражение для поиска / замены через подстановочные знаки.
Имеются вот такие регулярки.
ищем "([॒॑])([ा-ौ]|[ॢॣ]|[ँंः])" меняем местами "\2\1"
"(([ा-ौ]|[ॢॣ]|[ँंः]|[॒॑])+)ρ","ρ\1"
"([क-ह]|[क़-य़])ρ","ρ\1" эта нормально работает вроде
"((([क-ह]|[क़-य़])्)+)ρ","ρ\1"
"i((([क-ह]|[क़-य़])्)+)","\1i"
"i([क-ह]|[क़-य़])","\1ि" эта нормально работает вроде
"([१३])(([॒॑])+)","\1"
После недолгих экспериментов пришел к выводу, что не умеет поддерживать вложенные условия (()())
В екселе прекрасно работают.
Помогите, очень срочно нужно.
Заранее спасибо.
Обработываю через C# но впринципе это не важно
Использую
Word.Find find = app.Selection.Find;
string finds = listView1.Items[s].Text; // строка для поиска
find.Text = finds;
string fonts = txB_NAME_FONT.Text;
find.Font.Name = fonts; // поисковый шрифт
find.Replacement.ClearFormatting();
string Repl = listView1.Items[s].SubItems[1].Text; //строка для замены
Repl = Repl.Replace("\r", string.Empty);
find.Replacement.Text = Repl;
Object wrap = Word.WdFindWrap.wdFindContinue;
Object replace = Word.WdReplace.wdReplaceAll;
if ((s == 14) || (s == 199))
{
find.Text = "";
if ((finds.IndexOf("[") > 0)||(finds.IndexOf("]") > 0))
{
find.Text = "";
find.Text = finds;
}
else
{
find.Text = "";
find.Text = "[" + finds + "]"; //оборачиваем в скобки, иначе исключение для регулярок
}
find.Execute(FindText: Type.Missing,
MatchCase: false,
MatchWholeWord: false,
MatchWildcards: true, // включаем регулярки
MatchSoundsLike: missing,
MatchAllWordForms: false,
Forward: true,
Wrap: wrap,
Format: true,
ReplaceWith: missing, Replace: replace);
}