Еще один вопрос про регулярки.

Andreii

Пользователь
Регистрация
29.08.2015
Сообщения
42
Благодарностей
1
Баллы
8
есть столбец:
QWQE.QWE
ASQD.ASD
ZXCA.SDF
AAA
ASD.aaa
SDF.aaa

Нужно вытащить строку ААА условие: любые 3 большие буквы(могут быть пробел перед после). пробовал по всякому не получается, чат гпт сдался тоже... помучавшись могу предположить что нужно писать условие, но тут мои полномочия всё..
Если кто в курсе напишите плз
 

kagorec

Client
Регистрация
24.08.2013
Сообщения
978
Благодарностей
522
Баллы
93
Три большие и более англ буквы [A-Z]{3,}
Три большие и более англ буквы c вероятными пробелами до и после ([\s\t]*)[A-Z]{3,}([\s\t]*)
 
  • Спасибо
Реакции: Andreii

Andreii

Пользователь
Регистрация
29.08.2015
Сообщения
42
Благодарностей
1
Баллы
8
Три большие и более англ буквы [A-Z]{3,}
Три большие и более англ буквы c вероятными пробелами до и после ([\s\t]*)[A-Z]{3,}([\s\t]*)
спасибо кншн, но этот я вариант пробовал... неверный результат. Нужно вытащить строку ААА
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 786
Благодарностей
1 951
Баллы
113
  • Спасибо
Реакции: Andreii

K R

Client
Регистрация
14.01.2017
Сообщения
127
Благодарностей
127
Баллы
43
Если я правильно понял, то нужно искать совпадение в определенном столбце таблицы, потом брать найденную строку и работать с данными из неё.
Можно использовать вот такой код:
Ищем номер строки, значение которой соответствует регулярному выражения.:
// вместо table name - название своей таблицы.
IZennoTable table = project.Tables["table name"];

// задаём номер столбца в котором нужно искать значение. Первый столбец - 0, второй - 1 и т.д.
int column_number = 2;

int row_number = -1;

// перебираем в цикле все строки таблицы, получаем значение ячейки в нужном столбце, действием Trim удаляем возможные пробелы в начале и конце взятого значения, проверяем значение на совпадение с регулярным выражением.
for (int i = 0; i < table.RowCount; i++)
{
    string cell_value = table.GetCell(column_number, i).Trim();
    if (Regex.IsMatch(cell_value, @"^[A-Z]{3}$"))
    {
        row_number = i;
        break;
    }
}

// Если значение в строке совпало с регулярным выражением, то в переменную row_number вернётся номер первой соответствующей строки таблицы. Если совпадений не было, то вернётся значение "-1".
project.Variables["row_number"].Value = row_number.ToString();
Прикрепил пример шаблона и таблицы.
 

Вложения

  • Спасибо
Реакции: Andreii

Alex733

Client
Регистрация
27.11.2017
Сообщения
330
Благодарностей
243
Баллы
43
Возможно, имеется в виду, 3 любых подряд стоящих одинаковых букв в верхнем регистре (найдёт ровно 3 буквы, меньше и больше 3 не найдёт)

([A-Z])(?<!\1.)\1{2}(?!\1)
 
  • Спасибо
Реакции: Sergodjan и Andreii

Andreii

Пользователь
Регистрация
29.08.2015
Сообщения
42
Благодарностей
1
Баллы
8
Возможно, имеется в виду, 3 любых подряд стоящих одинаковых букв в верхнем регистре (найдёт ровно 3 буквы, меньше и больше 3 не найдёт)

([A-Z])(?<!\1.)\1{2}(?!\1)
(найдёт ровно 3 буквы, меньше и больше 3 не найдёт) 3 любых англ в верхнем (GDT KIU ERE)
 

Andreii

Пользователь
Регистрация
29.08.2015
Сообщения
42
Благодарностей
1
Баллы
8
Если я правильно понял, то нужно искать совпадение в определенном столбце таблицы, потом брать найденную строку и работать с данными из неё.
Можно использовать вот такой код:
Ищем номер строки, значение которой соответствует регулярному выражения.:
// вместо table name - название своей таблицы.
IZennoTable table = project.Tables["table name"];

// задаём номер столбца в котором нужно искать значение. Первый столбец - 0, второй - 1 и т.д.
int column_number = 2;

int row_number = -1;

// перебираем в цикле все строки таблицы, получаем значение ячейки в нужном столбце, действием Trim удаляем возможные пробелы в начале и конце взятого значения, проверяем значение на совпадение с регулярным выражением.
for (int i = 0; i < table.RowCount; i++)
{
    string cell_value = table.GetCell(column_number, i).Trim();
    if (Regex.IsMatch(cell_value, @"^[A-Z]{3}$"))
    {
        row_number = i;
        break;
    }
}

// Если значение в строке совпало с регулярным выражением, то в переменную row_number вернётся номер первой соответствующей строки таблицы. Если совпадений не было, то вернётся значение "-1".
project.Variables["row_number"].Value = row_number.ToString();
Прикрепил пример шаблона и таблицы.
тоже вариант, спасибо, но не в моем случае..(
 

K R

Client
Регистрация
14.01.2017
Сообщения
127
Благодарностей
127
Баллы
43
тоже вариант, спасибо, но не в моем случае..(
Так может напишете подробнее, что за случай. Потому что не совсем понятны условия. Это таблица? Нужно получить все значения подходящие под условие? Или только одно? Или речь вообще идёт о базе данных...
 
  • Спасибо
Реакции: Andreii

Alex733

Client
Регистрация
27.11.2017
Сообщения
330
Благодарностей
243
Баллы
43
[\s\t]{1}[A-Z]{3}[\s\t]{1}
 
  • Спасибо
Реакции: Andreii и Sergodjan

Andreii

Пользователь
Регистрация
29.08.2015
Сообщения
42
Благодарностей
1
Баллы
8

Andreii

Пользователь
Регистрация
29.08.2015
Сообщения
42
Благодарностей
1
Баллы
8
Еще вопрос в кубике взять(удалить) строку из таблицы по регулярному выражению, \b{-Variable.A-}\b
Variable.A =QWER

берет/удаляет QWER.US QWER.QS QWER.QO содержание эту переменную, \b пчмт не работает
121924
 

Andreii

Пользователь
Регистрация
29.08.2015
Сообщения
42
Благодарностей
1
Баллы
8
Получилось вот так, НО в тестере работает, а в кубики таблицы нет ...
121925
 

Andreii

Пользователь
Регистрация
29.08.2015
Сообщения
42
Благодарностей
1
Баллы
8
через отдельную переменную тож делал, не помогает ...
121929
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 363
Благодарностей
9 095
Баллы
113
Еще вопрос в кубике взять(удалить) строку из таблицы по регулярному выражению, \b{-Variable.A-}\b
Variable.A =QWER

берет/удаляет QWER.US QWER.QS QWER.QO содержание эту переменную, \b пчмт не работаетПосмотреть вложение 121924
Точка тоже является границей слова.
 
  • Спасибо
Реакции: Andreii

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 363
Благодарностей
9 095
Баллы
113
Еще вопрос в кубике взять(удалить) строку из таблицы по регулярному выражению, \b{-Variable.A-}\b
Variable.A =QWER

берет/удаляет QWER.US QWER.QS QWER.QO содержание эту переменную, \b пчмт не работаетПосмотреть вложение 121924
Попробуйте по такому критерию брать/удалять строку: \b{-Variable.A-}\b[^\.]
 
  • Спасибо
Реакции: Andreii

Andreii

Пользователь
Регистрация
29.08.2015
Сообщения
42
Благодарностей
1
Баллы
8
  • Спасибо
Реакции: Sergodjan

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