Задать вопрос
vpuhoff
@vpuhoff
Программист в свободное от работы время

Как правильно искать совпадения с рекулярками вида «*туттекст*тутещетекст*», где * любая последовательность символов?

К сожалению не постиг дзен регулярок и не понимаю как они строятся, пытался разными вариантами найти совпадение с подобными строками, но бесполезно, может кто пробовал подобное сделать или куда можно глянуть, что почитать понятное?
Пример:
Исходный текст: ыволраыловра ыва ыолва ТЕКСТ1 фырвлфоырв ТЕКСТ2 фыоврфлыв
регулярка: *ТЕКСТ1*ТЕКСТ2*
Результат: совпадение
Пример 2:
ыволраыловра ыва ыолва ТЕКСТ3 фырвлфоырв ТЕКСТ2 фыоврфлыв
регулярка: *ТЕКСТ1*ТЕКСТ2*
Результат: совпадения нет
  • Вопрос задан
  • 363 просмотра
Подписаться 2 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 6
Ivanq
@Ivanq
Знаю php, js, html, css
Вместо * пишите .* Звездочка обозначает от 0 повторений предыдущего символа. Плюс обозначает от 1 повторения. Точка - любой символ. .* - любое количество любых символов.
Ответ написан
Комментировать
abs0lut
@abs0lut
куда можно глянуть, что почитать понятное?

Mastering Regular Expressions by Jeffrey E. F. Friedl
Ответ написан
Комментировать
riky
@riky
Laravel
а почему во втором случае должно быть совпадение?

если ТЕКСТ1хотите не обязательным сделать так и пишите

регулярка:
.*(ТЕКСТ1)?.*ТЕКСТ2.*
Ответ написан
Комментировать
Daniro_San
@Daniro_San
Программист
По методам класса String смотрите и пишите свою функцию в чем проблема?
Ответ написан
Комментировать
@dmitryKovalskiy
программист средней руки
Как вариант вы можете у исходного текста дважды вызвать IndexOf передавая сначала текст1, затем текст2. Если вернули -1 - значит этих фраз нет. если (indexOf(текст1) + текст1.Length) равны IndexOf(текст2) - то значит фразы идут подряд. Ну это наверное не самое точное описание, но идея думаю ясна.
Ответ написан
kwayne
@kwayne
Если вам нужно найти любой текст формата ТЕКСТ1, т.е. - последовательность заглавных букв с цифрами в конце, то:

string s = " ыволраыловра ыва ыолва ТЕКСТ1 фырвлфоырв ТЕКСТ2 фыоврфлыв ";
            Regex reg = new Regex  (@"[А-Я]+\d+");
            MatchCollection m = reg.Matches(s);
            Console.Write("Строка:" + s);
            foreach (Match ma in m)
            {
                Console.Write("\n" + ma); 
            }
            Console.ReadKey();
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы