Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

 Страниц (25): В начало « 17 18 19 20 21 [22] 23 24 25 »   

> Описание: Поиск и замена текста по шаблонам регулярных выражений
KevinS
Отправлено: 25 Июля, 2022 - 11:41:29
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 217
Дата рег-ции: Февр. 2020  
Репутация: 2




 Martin пишет:
по аналогии из примера в начале темы пытаюсь найти текст между двумя словами, но не получается, помогите пожалуйста разобраться


string P[10];
string T="Как найти текст между слов)";
string R="(?<=текст)[А-я]+(?=слов)";
int k=regexsearch(-1, #P[0], T, R);
for (int n=0; n<k; n++)
{
messagebox (P[n]);
}


CODE:

string P[10];
string T="Как найти текст между слов)";
string R="(?<=текст)"+"(.*)+(?=слов)";
int k=regexsearch(-1, #P[0], T, R);
for (int n=0; n<k; n++)
{
messagebox (P[n]);
}
 
 Top
Zireael
Отправлено: 25 Июля, 2022 - 19:52:00
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4397
Дата рег-ции: Нояб. 2017  
Репутация: 580




 Цитата:
найти текст между двумя словами

CODE:
string s = "Как найти текст между слов";
string result;
if(regexsearch(1, #result, s, "(?<=найти).+(?=слов)"))
{
messagebox(result);
}
else messagebox("Не найдено");
 
 Top
Martin
Отправлено: 26 Июля, 2022 - 01:40:53
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 121
Дата рег-ции: Июнь 2022  
Репутация: 1




KevinS , не находит если больше двух слов между словами.

Zireael , Спасибо!

А как сделать проверку нескольких слов?
Если в тексте есть слова "первое, второе, и т.д." то выполнить действие1 иначе действие2?
 
 Top
Zireael
Отправлено: 26 Июля, 2022 - 05:55:14
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4397
Дата рег-ции: Нояб. 2017  
Репутация: 580




 Цитата:
А как сделать проверку нескольких слов?
Если в тексте есть слова "первое, второе, и т.д." то выполнить действие1 иначе действие2?

CODE:
string s = "первое, второе, третье и т.д.";
string result;
if(regexsearch(1, #result, s, "второе|третье|четвёртое")) // если в тексте есть есть одно из слов
{
messagebox("Действие1");
}
else messagebox("Действие2");

CODE:
string s = "Как найти текст между первое, второе, третье и т.д. слов";
string result;
if(regexsearch(1, #result, s, "(?<=найти).+(?=слов)")) // найти текст между словами: найти и слов
{
messagebox(result);
if(regexsearch(1, #result, result, "второе|третье|четвёртое")) // если в тексте есть есть одно из слов
{
messagebox("Действие1");
}
else messagebox("Действие2");
}
else messagebox("Не найдено");
 
 Top
konctantin777
Отправлено: 02 Сентября, 2022 - 12:34:28
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1136
Дата рег-ции: Окт. 2017  
Откуда: Архангельск
Репутация: 6




Здравствуйте.
Есть текст который бывает вида "3 ч 56 мин" и "36 мин 45 с". Как получать именно минуты ? Вырезанием и заменой не получается..
 
 Top
Zireael
Отправлено: 02 Сентября, 2022 - 12:53:56
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4397
Дата рег-ции: Нояб. 2017  
Репутация: 580




CODE:
string s = "3 ч 56 мин";
string result;

regexreplace(-1, #result, s, " ", ""); // удалить пробелы
if(regexsearch(1, #result, result, "\d+(?=мин)")) // найти число перед словом мин
{
messagebox(result);
}
else messagebox("Не найдено");
 
 Top
rora
Отправлено: 16 Ноября, 2022 - 00:36:00
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 15
Дата рег-ции: Нояб. 2022  
Репутация: 0




Уважаемые гуру как получить цифру между hello и tree ?
CODE:
<tr>
<td class="one">hello</td>
<td class="two">1</td>
<td class="tree">world</td>.
</tr>
<tr>
<td class="one">privet</td>
<td class="two">32</td>
<td class="tree">mir</td>.
</tr>
 
 Top
Zireael
Отправлено: 16 Ноября, 2022 - 01:30:01
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4397
Дата рег-ции: Нояб. 2017  
Репутация: 580




 Цитата:
как получить цифру между hello и tree ?

CODE:
string result;
string text = "<tr>"+
"<td class=^"one^">hello</td>"+
"<td class=^"two^">1</td>"+
"<td class=^"tree^">world</td>."+
"</tr>"+
"<tr>"+
"<td class=^"one^">privet</td>"+
"<td class=^"two^">32</td>"+
"<td class=^"tree^">mir</td>."+
"</tr>";

messagebox(text);

if(regexsearch(1, #result, text, "(?<=hello).+?(?=tree)")) // найти текст между hello и tree
{
messagebox(result);
if(regexsearch(1, #result, result, "\d+")) // найти число
{
messagebox(result);
}
}
 
 Top
rora
Отправлено: 17 Ноября, 2022 - 01:10:35
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 15
Дата рег-ции: Нояб. 2022  
Репутация: 0




Zireael , Спасибо, а в чем может быть ошибка когда тот же самый код с сайта пытаюсь спарсить ? Могут ли влиять переносы строки и пробелы на поиск?
(Добавление)
Разобрался, нужно использовать флаги.
 
 Top
Kibor
Отправлено: 17 Ноября, 2022 - 17:52:23
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8095
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




CODE:
string result;
string text = "<tr>"+
"<td class=^"one^">hello</td>"+
"<td class=^"two^">1</td>"+
"<td class=^"tree^">world</td>."+
"</tr>"+
"<tr>"+
"<td class=^"one^">privet</td>"+
"<td class=^"two^">32</td>"+
"<td class=^"tree^">mir</td>."+
"</tr>";

messagebox(text);
result=cuttext(text,"hello", "tree");
messagebox(result);
if(regexsearch(1, #result, result, "\d+")) // найти число
{
messagebox(result);
}
 
 Top
Страниц (25): В начало « 17 18 19 20 21 [22] 23 24 25 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« О программе Кибор »


Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by