Как в тексте проверить наличие ключевых слов

sof

Client
Регистрация
15.04.2013
Сообщения
831
Благодарностей
185
Баллы
43
Есть текст который я с помощью регулярки вытянул со страницы, положил ее в переменную и мне нужно этот текст проверить на наличие определенных слов. Как это сделать по умному? Если можно скрином покажите.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 714
Баллы
113
Операции с текстом - Regex ))
(Слово1|слово2|слово3) если нужно найти любое
 

Lexicon

Client
Регистрация
27.12.2012
Сообщения
1 775
Благодарностей
901
Баллы
113
А еще умнее сплитнуть текст по пробелам, привести к простой форме попутно удаляя союзы и частицы и уже по этому списку искать вхождения)
 

sof

Client
Регистрация
15.04.2013
Сообщения
831
Благодарностей
185
Баллы
43
У меня почему то логика не срабатывает правильно. Даже если пишет в логе ничего не найдено, то все равно идет по успешной ветке
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 714
Баллы
113
Не знаю что вы делаете :bn:
 

sof

Client
Регистрация
15.04.2013
Сообщения
831
Благодарностей
185
Баллы
43

maxxZEN

Client
Регистрация
18.03.2012
Сообщения
596
Благодарностей
113
Баллы
43
Все правильно, после regex нужно добавить экшн "логика" в котором прописать '{-Variable.minus_obr-}'!='' (здесь одиночные кавычки используются, можно и обычные двойные), положительный выход будет "Есть такое слово", отрицательный "Нет слова"
 
  • Спасибо
Реакции: sof

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 714
Баллы
113
Как уж вы с 2013 года регистрации не знаете что Regex всегда успешен))
 

QWER-MAS

Client
Регистрация
14.05.2015
Сообщения
99
Благодарностей
10
Баллы
18
Операции с текстом - Regex ))
(Слово1|слово2|слово3) если нужно найти любое
А как сделать чтоб он не был чувствителен к регистру?

У меня слова которые я ищу в тексте попадется с большой буквы или все буквы большие, и чета Regex их не находит.
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 407
Благодарностей
9 114
Баллы
113
А как сделать чтоб он не был чувствителен к регистру?

У меня слова которые я ищу в тексте попадется с большой буквы или все буквы большие, и чета Regex их не находит.
парсинг текста без учета регистра..

(?i)Агентам не звонить

спарсятся все варианты: Агентам не звонить, агентам не звонить, АГЕНТАМ НЕ ЗВОНИТЬ
 
  • Спасибо
Реакции: QWER-MAS

QWER-MAS

Client
Регистрация
14.05.2015
Сообщения
99
Благодарностей
10
Баллы
18
парсинг текста без учета регистра..

(?i)Агентам не звонить

спарсятся все варианты: Агентам не звонить, агентам не звонить, АГЕНТАМ НЕ ЗВОНИТЬ

Покажи пример на этом (Слово1|слово2|слово3|слово4)

А то я не понял куда ето вставить.
 

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 450
Благодарностей
1 885
Баллы
113
  • Спасибо
Реакции: QWER-MAS

QWER-MAS

Client
Регистрация
14.05.2015
Сообщения
99
Благодарностей
10
Баллы
18
Спасибо.
 

kolina

Client
Регистрация
05.10.2019
Сообщения
165
Благодарностей
47
Баллы
28
Подскажите пожалуйста: в переменной слово"кофемашина", делаю проверку regexp по ключу "кофе" на находит. Может регулярка какая нужна? Ну типа если до или после есть символы, то ответ положительный
 

kolina

Client
Регистрация
05.10.2019
Сообщения
165
Благодарностей
47
Баллы
28
ключ.*? не прокатывает тоже. В конструкторе прокатывает, а в кубике нет111111.png
 
Последнее редактирование:

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 022
Благодарностей
1 424
Баллы
113
регуляркой так
C#:
string text = "Подскажите пожалуйста: в переменной слово\"кофемашина\", делаю проверку regexp по ключу \"кофе\" на находит. Может регулярка какая нужна? Ну типа если до или после есть символы, то ответ положительный";//Текст, где ищем
string seekstr = "делаю проверку";//Текст, который ищем
//string regex = "(?i)("+seekstr+")";//составляем сложную регулярку с подстановкой переменной в поиск
string regex = seekstr;//обычный поиск текста
Match str = Regex.Match(text,regex);//ищем
if(str.Success) return 0;//если нашли, выход по зеленой ветке
else throw new Exception("Не найдено");//если нет, по красной
или проще, как мне кажется
C#:
string text = "Подскажите пожалуйста: в переменной слово\"кофемашина\", делаю проверку regexp по ключу \"кофе\" на находит. Может регулярка какая нужна? Ну типа если до или после есть символы, то ответ положительный";//Текст, где ищем
string seekstr = "делаю проверку";//Текст, который ищем
if(text.Contains(seekstr)) return 0;//если нашли, выход по зеленой ветке
else throw new Exception("Не найдено");//если нет, по красной
 
  • Спасибо
Реакции: kolina

b1zar

Client
Регистрация
29.06.2019
Сообщения
107
Благодарностей
66
Баллы
28
ключ.*? не прокатывает тоже. В конструкторе прокатывает, а в кубике нетПосмотреть вложение 65782
У тебя разный регистр букв, поэтому он и не находит "кофе" в "Кофемашина". Тут два варианта решения задачи:
1) В Regex включить функцию не учитывать регистр это делается просто, перед нужным словом ставишь "(?i)" без ковычек.
2) Преобразовать все символы в нижний регистр.

Можешь воспользоваться вот таким снипетом с#
C#:
return Convert.ToString(Regex.Matches("кофемашина","(?i)кофе").Count);
Вместо кофемашина нужно будет вставить свою переменную. Если есть совпадения он вернет значение выше 0, если нет, то соотвественно 0
 
  • Спасибо
Реакции: kolina

kolina

Client
Регистрация
05.10.2019
Сообщения
165
Благодарностей
47
Баллы
28
У тебя разный регистр букв, поэтому он и не находит "кофе" в "Кофемашина". Тут два варианта решения задачи:
1) В Regex включить функцию не учитывать регистр это делается просто, перед нужным словом ставишь "(?i)" без ковычек.
2) Преобразовать все символы в нижний регистр.

Можешь воспользоваться вот таким снипетом с#
C#:
return Convert.ToString(Regex.Matches("кофемашина","(?i)кофе").Count);
Вместо кофемашина нужно будет вставить свою переменную. Если есть совпадения он вернет значение выше 0, если нет, то соотвественно 0
Спасибо за ответы. Но всё таки хотел понять почему не отрабатывает так как я хочу. Регистр одинаковый, так как я переменную Zaglavie привожу к нижнему регистру, а уже потом пытаюсь найти. Хочу разобраться, что бы потом не чпокаться ещё раз
222222.png
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 407
Благодарностей
9 114
Баллы
113
  • Спасибо
Реакции: Dimson и kolina

kolina

Client
Регистрация
05.10.2019
Сообщения
165
Благодарностей
47
Баллы
28
Проверьте еще раз, возможно в переменной Kluch у вас есть конечный пробел.

Посмотреть вложение 65798
Всё получилось. Переменную Kluch пропустил через Trim. Видимо когда список ключей из переменной ложу в список, визуально не видно пробел, а он есть. Может в другом дело. Но решение найдено. Спасибо!
 
  • Спасибо
Реакции: Sergodjan

art22

Client
Регистрация
24.06.2016
Сообщения
484
Благодарностей
69
Баллы
28
Проверьте еще раз, возможно в переменной Kluch у вас есть конечный пробел.
А как искать только целое слово? использую (?i)Cap все отлично работает распознает большие маленькие буквы. если будет слово Capmonstr все равно находит слово cap.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
А как искать только целое слово? использую (?i)Cap все отлично работает распознает большие маленькие буквы. если будет слово Capmonstr все равно находит слово cap.
Почитай о модификаторе \b
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)