Регулярные выражения. c#

228
24 марта 2018, 13:57

Код:

string text = "aa hi hie";
Regex regex = new Regex("(hi)");
Match match = regex.Match(text, startIndex);

Проблема. При Match'e я хочу убедиться, что моя искомая подстрока начинается именно с указанного startIndex (например 3 в нашем примере) и никак иначе. Т.е. я хочу добиться такого же результата, когда мы используем "^" в шаблоне. Пока в голову приходило только делать Substring строки с указанного startIndex, а потом использовать шаблон:

Regex regex = new Regex("^(hi)");

Но такое решение меня не очень устраивает. Хотелось бы узнать альтернативные решения.

Answer 1
if (text.IndexOf("hi") == 3) { ... }
Answer 2

искомая подстрока начинается именно с указанного startIndex

int startIndex = 3;
string text = "aa hi hie";
string pattern = $"^.{{{startIndex}}}(hi)";
Regex regex = new Regex(pattern);
Match match = regex.Match(text);

Шаблон для поиска будет выглядеть следующим образом:

^.{3}(hi)

Совпадения строго с начала строки, потом три любых символа, потом желаемое совпадение.

READ ALSO
Добавление новых строк в DataGridView

Добавление новых строк в DataGridView

WinFormЕсть DataGridView не привязаный к DataSource

194
Запуск программы начиная со 2 формы

Запуск программы начиная со 2 формы

Как переиначить проект, чтобы при старте программы изначально запускалась вторая форма вместо первойЯ не хочу вызвать вторую из первой и первую...

238
SEHException в многопоточном приложении на MVC 4 с использованием OpenCV

SEHException в многопоточном приложении на MVC 4 с использованием OpenCV

Я пытаюсь найти на большом изображении несколько мелких, используя OpenCV SIFT в VS2017 на C#Итак, у меня есть отдельные изображения и несколько копий...

219
Ребят что делать дефендер считает мою программу вирусом?

Ребят что делать дефендер считает мою программу вирусом?

Написал приложение клиент для соц сети на C# и дефендер считает его вирусом что за беспредел? Trojan:Win32/SpriskyW!cl

230