Регулярное выражение для поиска по ячейкам таблицы, не строкам

Devostator

Client
Регистрация
17.09.2011
Сообщения
277
Благодарностей
28
Баллы
28
Здравствуйте.

Есть экшен взять строку из таблицы.

Удовлетворяющую регулярному выражению.

Проблема и задача в следующем:

В таблице есть строки содержащие в ячейке F данные:

1domain.ru
2domain.ru
*domain.ru
domain.ru

* - любой неизвестный нам символ.

Другие ячейки таблицы содержат произвольные наборы символов.

Как нам взять строку из таблицы, в ячейке F, которой только строго "domain.ru"?

Пробовал:

1)
Регулярку: ^domain.ru

Но тогда он считает ^ как начало строки, а не начало ячейки. Поэтому domain.ru не находит.

2) Пробовал нечто вроде такого:
(?:(?![0-9a-zа-яёЁ-]).)domain.ru

Чтобы найти любой символ который может означать разделение столбцов. Но увы ничего не вышло.

Символы: Tab ; , \n
тоже не получилось.

Как мне найти начало ячейки хотя бы?
 

Вложения

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 859
Благодарностей
9 306
Баллы
113
@Devostator Вот тут, по моему, то что нужно:


Либо еще вот такую регулярку можно использовать: ^(?:[^;\n]*;){5}\bdomain\.ru\b(?:;|$)
 
  • Спасибо
Реакции: Devostator

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 754
Благодарностей
1 334
Баллы
113
Нахожу номер нужной строки вот таким сниппетом:
C#:
string table_1ColText1 = project.Variables["table_column"].Value;

var table_1 = project.Tables["Таблица"];
var chekVar1 = project.Variables["text_to_find"].Value;

int RowCount1 = project.Tables["Таблица"].RowCount;
RowCount1 = RowCount1-1;

for (int m = 0; m<=RowCount1; m++)
    {
        if (table_1.GetCell(table_1ColText1, m) == chekVar1)
            {
            return m;
            }
    }
Соответственно, задаем в настройках колонку, по которой искать, текст, который искать (точное совпадение в ячейке), получаем в переменную нужную, дальше уже решаем, что с ней делать...

130803
Наверное, можно и другими сниппетами сразу решать поставленную задачу, но мне обычно надо просто найти нужную строку, а дальше уже в зависимости от задачи (они бывают разные) обрабатывать разные колонки.
 
  • Спасибо
Реакции: Devostator

Devostator

Client
Регистрация
17.09.2011
Сообщения
277
Благодарностей
28
Баллы
28
Нахожу номер нужной строки вот таким сниппетом:
C#:
string table_1ColText1 = project.Variables["table_column"].Value;

var table_1 = project.Tables["Таблица"];
var chekVar1 = project.Variables["text_to_find"].Value;

int RowCount1 = project.Tables["Таблица"].RowCount;
RowCount1 = RowCount1-1;

for (int m = 0; m<=RowCount1; m++)
    {
        if (table_1.GetCell(table_1ColText1, m) == chekVar1)
            {
            return m;
            }
    }
Соответственно, задаем в настройках колонку, по которой искать, текст, который искать (точное совпадение в ячейке), получаем в переменную нужную, дальше уже решаем, что с ней делать...

Наверное, можно и другими сниппетами сразу решать поставленную задачу, но мне обычно надо просто найти нужную строку, а дальше уже в зависимости от задачи (они бывают разные) обрабатывать разные колонки.
Спасибо за решение!

Сниппет кстати хороший. Сохраню для другой задачи, поиска номера строки по точному совпадению.

К сожалению для моей задачи не очень удобно, т.к. много разных таблиц, я иногда даже заранее не знаю в каком столбце будет нужное мне значение. Вообщем есть много нюансов из-за которых вынужден искать решение.

В тз я естественно указал сильно упрощенную модель, т.к. предполагал что решение будет универсальным. Учитывая сколько зенка существует, почему-то думал что такая простая штука как поиск точного совпадения по ячейкам - это мастхэв экшен для таблиц в конструкторе яля ЗП.

@Devostator Вот тут, по моему, то что нужно:


Либо еще вот такую регулярку можно использовать: ^(?:[^;\n]*;){5}\bdomain\.ru\b(?:;|$)
К сожалению регулярка не сработала. По ссылке регулярка работает не так как мне надо.

Странно кстати, \ba\b находит любое слово содержащее символ a. Хотя судя по описанию ключа, работать должно не так.

В любом случае, пока тут копался, лучше своего костыля не нашёл.

Код:
(?:(?![0-9a-zа-яёЁ-])){-Variable.domain-}(?:(?![0-9a-zа-яёЁ-]))
Находит, то что нужно. Может пригодится кому.
 

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