Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.07.2019, 09:33   #1
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию Вопрос по Regex

Здравствуйте.
Есть задача найти в тексте фразы из кусков слов в разном порядке.
Пример:
Вчера вечером мама мыла раму в квартире.
Вчера вечером мыла раму мама в квартире.
Вчера вечером раму мыла мама в квартире.

Нашел такую регулярку:
Код:
(мама|мыла|раму) (?!\1)(мама|мыла|раму) (?!\1)(?!\2)(мама|мыла|раму)
Но проблема что она находит только первое вхождение сочетание. А мне нужно по всему тексту. Это возможно??
Изображения
Тип файла: jpg Безымянный.jpg (40.6 Кб, 52 просмотров)
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 12.07.2019, 09:43   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

добавьте /gm

https://regex101.com/
regul1.png
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.07.2019, 09:45   #3
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

а зачем так сложно?
Код:
(мама мыла раму)|(раму мыла мама)|(мыла раму мама)
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 12.07.2019, 09:47   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

мама раму мыла ?
мыла мама раму ?
раму мама мыла ?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.07.2019, 09:48   #5
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
а зачем так сложно?
Код:
(мама мыла раму)|(раму мыла мама)|(мыла раму мама)
Ну я изначально тоже через или начал .. но в моем случае как то все громоздко получалось ... думал можно проще.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 12.07.2019, 14:29   #6
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

А как найти начало слова?
Допустим есть текст:
оцениваю
оцениваю
по цене
по цене



Вот регулярка "\s(цен\S+)"
То есть надо выбрать слова которые именно начинаются на "цен" но данная регулярка включает в себя первый пробел. А можно как то задать чтобы не включительно было?
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 12.07.2019, 15:25   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
но данная регулярка включает в себя первый пробел
так у Вас же группа выделена (то, что в круглых скобках)
обращайтесь к группе 1 ($1 например)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.07.2019, 15:26   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Код:
\b.......\b
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 12.07.2019, 16:00   #9
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Не понял не первого ни второго.
Вот скрин.
Везде в группы попадает первый пробел. А хотелось бы чтобы он не проходил в группу а просто определителем был.

B еще почему может быть глюк:
Код:
string tess = "Для понимания текста необходимо хорошее знание древнегреческой мифологии";
var eee = Regex.Match(tess, @"(пониман\S+)\W+(хоро\S+)\W+(мифоло\S+)", RegexOptions.IgnoreCase);
Шарп почему то не находит ни одного совпадения а на сайте очень даже хорошо все работает. В чем может быть ошибка?
Изображения
Тип файла: jpg Безымянный.jpg (35.2 Кб, 34 просмотров)
Тип файла: jpg 2ddd.jpg (35.1 Кб, 34 просмотров)
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.

Последний раз редактировалось WorldMaster; 12.07.2019 в 16:21.
WorldMaster вне форума Ответить с цитированием
Старый 12.07.2019, 16:37   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

вам же сайт пишет Full Match Group 1 Group 2 .. и т.д.

проверьте
Код:
public static void Main(string[] args)
		{
			
			string s = "оцениваю оцениваю по цене большая ЦЕНА уценённый товар, рост цен обесценил цену";
			Regex regex = new Regex(@"\s(цен\S*)", RegexOptions.IgnoreCase);
			
			MatchCollection matches = regex.Matches(s);
			if (matches.Count > 0)
			{
				foreach (Match match in matches)
					Console.WriteLine(">{0}<",match.Groups[1]);
			}
			else
			{
				Console.WriteLine("Совпадений не найдено");
			}

			Console.Write("Press any key to continue . . . ");
			Console.ReadKey(true);
		}
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Regex record222 PHP 2 20.01.2013 14:43
C# и regex Vigo_Alex Помощь студентам 0 12.10.2010 02:26
Java, regex Namolem Помощь студентам 0 02.05.2010 23:07
Regex Cpluser Общие вопросы .NET 1 27.04.2010 14:52
Regex CWD Общие вопросы .NET 6 14.11.2009 23:42