Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
VBA Условные циклы VBA https://www.cyberforum.ru/ vba/ thread898929.html
Вычислить значение y. yn=1-x+x2-...+(-x)n. Подсчет вести до тех пор пока: |yn+1-yn|<E. Значение x и E задавать с клавиатуры так, чтобы: |x|<1.
VBA Как сортировать?
по убыванию строку и записывать результат в столбец?(vba)
VBA Как сделать ввод в Excel из многоуровнего списка через форму ввода? https://www.cyberforum.ru/ vba/ thread898705.html
На листе excel есть справочная таблица из 3 столбцов. В первом перечислены классы, во втором - входящие в него группы, а в третьем - входящие в группы предметы. Хотелось бы на другом листе вызывать форму добавления нового предмета с полем ввода, при нажатии на которое появлялось бы трехуровневое меню, раскрывающееся при наведении. Например: вошел в поле ввода - появилось меню классов (1,2,3....
VBA Нахождение среди трех заданных чисел самого большого отрицательного числа Народ хотел спросить может кто поможет 5 заданий сделать на программирование на VBA конечно за определенную плату и есть ли на форуме платный раздел)))))) Ответ нужен срочно!!!!!!! https://www.cyberforum.ru/ vba/ thread898626.html
VBA Работа с фигурами (узнать имя и назначить ФУНКЦИЮ)
Приветствую! Пишу большую программу по обработке данных. Много лет не брался за VBA, основательно все позабывал, но как говорится приперло... Есть несколько вопросов, если уже было прошу сильно не не бить (честно искал). 1. Как узнать имя фигуры, на которую нажали? 2. Как назначить фигуре функцию, а не макрос? Смысл этих вопросов - передать некий контент для обработки по нажатию на...
VBA Изменение размера изображения, выводимого на форму В мою форму подгружаются картинки разного размера Me.Image1.Picture = LoadPicture("C:\temp\" + PicResults.Items(i).filename) Проблема в том, что исходные картинки бывают слишком большими и они не умещаются в отведенную область Есть ли способ менять размер изображения на форме на заданный (по одной из сторон) ? Спасибо! https://www.cyberforum.ru/ vba/ thread898488.html
VBA Заполнение столбца до уровня соседнего Подскажите, как в excel заполнить один столбец текстовыми данными (скажем "текстПоля") до того уровня, где кончаются данные в контрольном (скажем сосоднем)? Каждый раз при запуске макроса количество строк контрольного разное. Т.е. если контрольный столбец имеет 10 строк, то целевой заполняется на те же 10 строк, не более. Заранее благодарен https://www.cyberforum.ru/ vba/ thread898456.html VBA Неполная конвертация данных в колонках (текст >> число)
Здравствуйте, уважаемые форумчане. Всплыла такая проблема. Написал некоторый макрос, в начале которого проводится конвертация типа данных для некоторых колоннок. Макрос используют достаточно большое колличество людей. Но почему-то у некоторых не полностью конвертируются данные, то есть в некоторых столбцах часть данных текстовая, а другая часть данных числовая. Используется Exel 2003. С чем это...
VBA Как в таблице MS Word добавить три смежных строки со сдвигом вниз разработать макрос ,добавляющий в таблице три смежных строки со сдвигом вниз от заданный строки в MS Word. https://www.cyberforum.ru/ vba/ thread898270.html VBA Составить фразу, в которой слово неделя склоняется в зависимости от количества недель https://www.cyberforum.ru/ vba/ thread898195.html
Добрый день! Такой вопрос, есть к примеру текстовое поле закрытое для ввода данных с клавиатуры. В текстовое поле, вводятся данные при нажатии на кнопку через InputBox. Так вот вопрос: 1. Как сделать, чтобы при вводе данных пользователем, к примеру в InputBox введено 1 - 5 далее он дописывает недель. 2. Если введено 10 - 50 и более тогда к веденным данным дописывается недель. 3. Если просто...
VBA Математическая статистика. Обработка информации
Народ помогите с решением задачи: 3 вида информация поступает каждые 6 минут в 2 центра по закону p(x)=a*exp(-at). Первый центр обрабатывает 10 мин 1 и 2 инфу, второй центр 8 минут - все, если первый занят, то второй обрабатывать может и 1,2 инфу. 1 и 2 вид инфы поступают с вероятнгстью 0,25, третий- 0,5. В каждом центре фиксировано количество обрабатывемой инфы каждого типа. Сколько всего...
VBA Отключить уведомления или включить автоподтверждение Здрям! Word 2003. После каждого действия выдает: "Достигнут конец документа. Начать с начала?" и "Просмотр выделенного фрагмента закончен. Сделано ___ замен. Продолжить поиск в оставшейся части?" Как сделать сабж? ' ДМ Макрос ' Макрос записан 02.01.2012 Admin ' Selection.WholeStory https://www.cyberforum.ru/ vba/ thread897882.html
6081 / 1325 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
12.06.2013, 22:47 0

Анализ строк в VBA - VBA - Ответ 4712251

12.06.2013, 22:47. Показов 4333. Ответов 20
Метки (Все метки)

Ответ

Цитата Сообщение от Але-Дашкова Посмотреть сообщение
не могли бы вы объяснить мне ваше регулярное выражение?
С удовольствием.

Итак, имеем регулярное выражение:
Код
"^(?:[^бк]|к+[^ак]|б[^аб]|б(?:б|аб)*[^бк])*(?:б(?:б|аб)*)ак(к|[^ак][^к]*)*$"
В начале регулярного выражения находится знак "^". Если этот знак находится вне квадратных скобок, то он означает начало строки.

В конце выражения находится знак "$". Он означает конец строки. Вместе эти два знака заставляют выражение анализировать всю строку целиком.

Круглые скобки "(" и ")" используются для группировки, причем результаты группировки сохраняются в специальном буфере. Если нам не нужно сохранять результаты в буфере, то мы вставляем после открывающей скобки последовательность "?:" и ускоряем таким образом работу интерпретатора регулярных выражений.

Вертикальная черта "|" выполняет роль связки "или", а звездочка "*" означает, что данный символ или группа повторяются в выражении любое количество раз.

Таким образом, часть "(?:[^бк]|к+[^ак]|б[^аб]|б(?:б|аб)*[^бк])*" выражения означает, что после начала строки могут следовать в любом порядке и количестве следующие символы или группы символов:
Код
"[^бк]"
"к+[^ак]"
"б[^аб]"
"б(?:б|аб)*[^бк]"
Рассмотрим их подробнее:
  1. "[^бк]"
    Внутри квадратных скобок символ "^" означает отрицание. Таким образом, "[^бк]" означает: любой символ, кроме "б" и "к". Очевидно, что если символ не является ни символом "б", ни символом "к", то он не может быть началом буквосочетаний "бак" или "ка".
  2. "к+[^ак]"
    Символ "+" означает "одно или более". Таким образом, в выражении нам может встретиться один или более символов "к" подряд - это нормально, главное, чтобы после символа "к" не было символа "а" (иначе образуется подстрока "ка", что противоречит условиям задачи), и чтобы в конце последовательности стоял символ более продуктивный, чем "к", например, символ "б".
  3. "б[^аб]"
    Данное выражение определяет символ "б", который не приносит результата, так как после него не стоит продолжающий фразу "бак" символ "а", и даже буквы "б" после него не следует.
  4. "б(?:б|аб)*[^бк]"
    Данное выражение определяет второй вариант символа "б", который не приносит результата. Хотя после него стоят символы "а" или "б", в конце видно, что эта ветка также обрывается.
Таким образом, все рассмотренные выше выражения определяют нулевые ветки - ветки, которые могут входить в выражение, не противоречащее условиям задачи, но при этом не приносят результата.
Следующая часть выражения "(?:б(?:б|аб)*)ак" определяет искомую подстроку "бак".
  1. "б" - буква "б";
  2. "ак" может следовать не сразу за первой буквой "б": после первой буквы "б" могут стоять и другие буквы "б" и даже подстроки вида "аб", но, как бы то ни было, перед "ак" будет все-таки стоять буква "б".
Наконец, после искомой подстроки "бак" может стоять любая последовательность символов, не образующая подстроку "ка", в том числе в сочетании с буквой "к" подстроки "бак". Эта последовательность определяется выражением (к|[^ак][^к]*)*, которое означает следующее:
  1. после символа "к" подстроки "бак" может стоять любое количество символов "к";
  2. после символа "к" может стоять символ, прерывающий последовательность символов "к", т.е. не символ "к", но также и не символ "а", так как он образует вместе с символом "к" подстроку "ка", которая противоречит условиям задачи;
  3. второй вариант может продолжаться любыми символами, кроме "к", если же встретился символ "к", то оба варианта (1-ый и 2-ой) рассматриваются с самого начала.

С уважением,
Aksima
Добавлено через 4 минуты
Цитата Сообщение от ikki Посмотреть сообщение
строка "бака" удовлетворяет условию или нет?
Кстати, такой вариант, как следует из изложенного мной выше, тоже учитывается (и бракуется).
За исключением этого варианта, регулярное выражение, предложенное ikki - просто супер!

Вернуться к обсуждению:
Анализ строк в VBA VBA
3
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.06.2013, 22:47
Готовые ответы и решения:

Анализ кода VBA
Всем привет! Разрабатываю анализатор кода VBA, который ищет не используемые переменные в...

Vba Ms Project. Error '1101' число строк проекта превысит предельное значение в 1048000 строк
Всем доброго дня. Вот решился задать вопрос, тк очень долго не могу найти ответ на форумах. Как...

Факторный анализ (умножение по 2-м условиям) не VBA
Здравствуйте. Я уже что только ни пробовала, может вы поможете. Есть, 4 столбца. В первом...

Анализ строк в таблице
Добрый день! Есть таблица звонков: ID_abon Date of call Time of call Roaming...

20
12.06.2013, 22:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.06.2013, 22:47
Помогаю со студенческими работами здесь

Анализ строк двух файлов
Добрый день! Я получаю содержимое двух файлов .java или .xml , мне необходимо сравнить два файла и...

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

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

Анализ столбца и перенос нужных строк в зависимости от даты
Добрый день. Возникла такая необходимость: есть табл. лист 1 на которой выставляется &quot;Дата...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru