Как взять точное совпадение из списка

Zheka84

Client
Регистрация
13.10.2018
Сообщения
159
Благодарностей
24
Баллы
18
Здравствуйте, поиском по форуму воспользовался, но ничего не нашёл.
Собственно вопрос: как взять точное совпадение из списка?
К примеру нужно проверить наличие числа 1000 в списке, но при этом в списке есть число 51000, оно берёт его, через функцию "получить строку/содержит текст". Но мне нужно знать есть ли именно число 1000 в списке.
Спасибо большое.
 

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 304
Благодарностей
5 421
Баллы
113
Теоретически
Код:
^1000$
Но в списке это может не работать, т.к. там переносы строк. Где-то было решение, если никто раньше меня не ответит скину.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 605
Благодарностей
4 595
Баллы
113

Zheka84

Client
Регистрация
13.10.2018
Сообщения
159
Благодарностей
24
Баллы
18

bad robot

Client
Регистрация
07.03.2011
Сообщения
174
Благодарностей
26
Баллы
28
со скобками будет косячить
 

Rk61

Client
Регистрация
03.02.2015
Сообщения
114
Благодарностей
125
Баллы
43
C#:
var list = project.Lists["Список"];
string id = project.Variables["id"].Value;

if(list.Contains(id))
{
    //return "true";
}
else
{
    //return "false";
}
 
  • Спасибо
Реакции: Zheka84

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 758
Благодарностей
2 392
Баллы
113
Код:
List<string> list = new List<string>();
list.Add("100");
list.Add("1000");
list.Add("510000");
list.Add("1000");
list.Add(" 1000");

string id = "1000";
// Строгое совпадение
project.SendInfoToLog("Строгое совпадение");
project.SendInfoToLog(list.Contains(id) ? "Да" : "Нет");

// Строгое совпадение
project.SendInfoToLog("Строгое совпадение + узнаем сколько");
foreach(string line in list) if(line == id) project.SendInfoToLog("+1 совпадение");

// НЕ Строгое совпадение
project.SendInfoToLog("НЕ Строгое совпадение + узнаем сколько");
foreach(string line in list) if(line.Contains(id)) project.SendInfoToLog("+1 совпадение");
 
  • Спасибо
Реакции: Zheka84

anarbus

Client
Регистрация
16.07.2019
Сообщения
289
Благодарностей
15
Баллы
18
Теоретически
Код:
^1000$
Но в списке это может не работать, т.к. там переносы строк. Где-то было решение, если никто раньше меня не ответит скину.
Было бы не плохо в обновлениях для Zenno добавить "CheckBox" Точное совпадение
 

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 304
Благодарностей
5 421
Баллы
113
Было бы не плохо в обновлениях для Zenno добавить "CheckBox" Точное совпадение
Зачем. Если простейшая регулярка делает это без проблем. Но если хотите в раздел предложений пишите.
 
  • Спасибо
Реакции: one

mrboogie

Client
Регистрация
28.05.2019
Сообщения
40
Благодарностей
18
Баллы
8
Зачем. Если простейшая регулярка делает это без проблем. Но если хотите в раздел предложений пишите.
Не всегда приходится работать только с точной переменной иногда это разный текст либо число
 

Podric

Client
Регистрация
16.08.2019
Сообщения
76
Благодарностей
6
Баллы
8
Зачем. Если простейшая регулярка делает это без проблем. Но если хотите в раздел предложений пишите.
не всегда.если мне нужно взять из списка "Вася спит" а в списке есть "Вася спит всегда" тоберетса второй вариант
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 683
Баллы
113

Podric

Client
Регистрация
16.08.2019
Сообщения
76
Благодарностей
6
Баллы
8

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 683
Баллы
113
если можно то поясни)
если регулярку сделаешь для точного совпадения полной строки, то и будет брать только полное совпадение.
а "Вася спит" в "Вася спит всегда" это не точное совпадение, а частичное.
 

Podric

Client
Регистрация
16.08.2019
Сообщения
76
Благодарностей
6
Баллы
8
если регулярку сделаешь для точного совпадения полной строки, то и будет брать только полное совпадение.
а "Вася спит" в "Вася спит всегда" это не точное совпадение, а частичное.
а как взять точное совпадения полной строки?)
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 683
Баллы
113
а как взять точное совпадения полной строки?)
я не очень в регулярках, ну вот по бырому накидал. Вообще на форуме часто разные регулярки пролетают, поищи под свои запросы.

75549
 

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 304
Благодарностей
5 421
Баллы
113

Podric

Client
Регистрация
16.08.2019
Сообщения
76
Благодарностей
6
Баллы
8
  • Спасибо
Реакции: Mikhail B.

sociohacker

Client
Регистрация
08.10.2018
Сообщения
89
Благодарностей
25
Баллы
18
Господа, подскажите, а как искать по точному совпадению в таблице, а не в списке?
Регулярка с ^$ - не работает.
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 362
Благодарностей
8 648
Баллы
113

sociohacker

Client
Регистрация
08.10.2018
Сообщения
89
Благодарностей
25
Баллы
18
  • Спасибо
Реакции: Sergodjan

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 362
Благодарностей
8 648
Баллы
113
  • Спасибо
Реакции: sociohacker

nik-n

Client
Регистрация
05.11.2016
Сообщения
229
Благодарностей
18
Баллы
18
А просто в переменной лежит если HTML? Как найти короткое слово с точным вхождением?
А тут вообще не просто, еще могут быть варианты когда текст заканчивается точкой, типа: "туда сюда по жд." ил если слово "железная дорога (жд)" будет в скобках, и пр.
Как найти только слово целиком "жд", и не находить слов типа "ждать", "одежда" и пр.?
Типа - найти "жд", но что бы вокруг этого слова не было больше никаких букв (числа, пробелы, спецсимволы можно).

103203


Выполнение действия TextProcessing Ничего не найдено при поиске текста регулярным выражением
 
Последнее редактирование:

viol2021

Client
Регистрация
12.01.2021
Сообщения
481
Благодарностей
179
Баллы
43
Здравствуйте, поиском по форуму воспользовался, но ничего не нашёл.
Собственно вопрос: как взять точное совпадение из списка?
К примеру нужно проверить наличие числа 1000 в списке, но при этом в списке есть число 51000, оно берёт его, через функцию "получить строку/содержит текст". Но мне нужно знать есть ли именно число 1000 в списке.
Спасибо большое.
C#:
 List<string> list = new List<string>()
            {
                
                "51000",
                "9000",
                "10000",
                "1000"
            };

            string poisk = "10000";

            string result = list.FirstOrDefault(x => x.Equals(poisk));

            if(result != null)
                project.SendInfoToLog(result);

            else
                project.SendInfoToLog("Нет такой строки в списке");
 

nik-n

Client
Регистрация
05.11.2016
Сообщения
229
Благодарностей
18
Баллы
18
А просто в переменной лежит если HTML? Как найти короткое слово с точным вхождением?
А тут вообще не просто, еще могут быть варианты когда текст заканчивается точкой, типа: "туда сюда по жд." ил если слово "железная дорога (жд)" будет в скобках, и пр.
Как найти только слово целиком "жд", и не находить слов типа "ждать", "одежда" и пр.?
Типа - найти "жд", но что бы вокруг этого слова не было больше никаких букв (числа, пробелы, спецсимволы можно).

Посмотреть вложение 103203

Выполнение действия TextProcessing Ничего не найдено при поиске текста регулярным выражением
спасибо chatGpt, в первую очередь вопросы буду задавать теперь только там )
подсказала как сделать на C#
Задал ей вопрос:
мне нужен c# код который будет находить в тексте только целые слова "жд" пример текста: "жд билеты на жд одежда ждать жд."

Говорит:
Вот код, который учитывает только целые слова "жд":
C#:
string text = "жд билеты на жд одежда ждать жд.";
string[] words = text.Split(new char[] { ' ', '.', ',', '!', '?', ':', ';', '(', ')' }, StringSplitOptions.RemoveEmptyEntries);

foreach (string word in words)
{
    if (word.ToLower() == "жд")
    {
        Console.WriteLine(word);
    }
}
и пояснила:
Этот код использует метод Split, чтобы разделить текст на отдельные слова, и затем проходит по каждому слову, чтобы проверить, является ли оно целым словом "жд". В результате должны быть выведены все три целых слова "жд" из примера текста.

и все работает.... я в акуе...
 

viol2021

Client
Регистрация
12.01.2021
Сообщения
481
Благодарностей
179
Баллы
43
спасибо chatGpt, в первую очередь вопросы буду задавать теперь только там )
подсказала как сделать на C#
Задал ей вопрос:
мне нужен c# код который будет находить в тексте только целые слова "жд" пример текста: "жд билеты на жд одежда ждать жд."

Говорит:
Вот код, который учитывает только целые слова "жд":
C#:
string text = "жд билеты на жд одежда ждать жд.";
string[] words = text.Split(new char[] { ' ', '.', ',', '!', '?', ':', ';', '(', ')' }, StringSplitOptions.RemoveEmptyEntries);

foreach (string word in words)
{
    if (word.ToLower() == "жд")
    {
        Console.WriteLine(word);
    }
}
и пояснила:
Этот код использует метод Split, чтобы разделить текст на отдельные слова, и затем проходит по каждому слову, чтобы проверить, является ли оно целым словом "жд". В результате должны быть выведены все три целых слова "жд" из примера текста.

и все работает.... я в акуе...
А если будет не жд, а Жд. Не найдёт)))
 

nik-n

Client
Регистрация
05.11.2016
Сообщения
229
Благодарностей
18
Баллы
18

mig-z

Client
Регистрация
05.12.2014
Сообщения
303
Благодарностей
70
Баллы
28
$^ не находит в конструкторе регулярных выражений. Версия 7.7.4.0.
116498
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 362
Благодарностей
8 648
Баллы
113
$^ не находит в конструкторе регулярных выражений. Версия 7.7.4.0.
Посмотреть вложение 116498
В конструкторе и постере многострочный текст интерпретируется как одна строка со служебными символами (переводами строк), поэтому есть такая особенность. Именно к багам я бы не относил, просто нужно учитывать.

Попробуйте использовать такую регулярку: ^text(?=\r?\n|$)

116499
 
Последнее редактирование:
  • Спасибо
Реакции: mig-z и Ribas

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