![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 16 Всего: 160 |
Akella, имелось ввиду PCRE-based Components for Delphi for Windows/Win32 (чуть ниже, того что ты привёл). Будет время посмотрю как там работа организована.
-------------------- |
|||
|
||||
WaReZMEN |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 683 Регистрация: 9.6.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: 3 |
Статья супер все простые варианты я понял и активно заюзал но столкнулся со сложным вариантом помогите разобраться пожалуйста
вот текст ABC := 'dsfdfdsf' Хочу получить только слово ABC ABC.ABC := 'dsfdfdsf' Ничего не получу потому как есть "." ABC :Integer; ничего не берем ну естественно пробелы до ABC куча может быть и после тоже... а также под ABC понимается некоторое слово на латинице.... |
|||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 16 Всего: 160 |
WaReZMEN, может я что не так понял в постановке задачи, но не вижу ничего сложного. Регулярное выражение ([a-zA-Z]+) :=, нужное слово будет в RegExp.Match[1].
А может всё-таки не только слово, нои любой идентификатор? Уточните задачу. -------------------- |
|||
|
||||
WaReZMEN |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 683 Регистрация: 9.6.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: 3 |
там может быть не только латинское слово также и цифры и прочая лабуда но интересует чтоб не было точки (SDF.ABC) и после не ABC должно быть :=
P.S. если строчка будет вида ABC := 'fdsfdsf'; FGHJ.DFR1 :='dfdgdfg'; то все равно берем ABC если б во второй части (FGHJ.DFR1 :='dfdgdfg') не было точки, а было бы DFR1 :='dfdgdfg' мы бы еще получили и DFR1. Это сообщение отредактировал(а) WaReZMEN - 13.1.2009, 20:00 |
|||
|
||||
source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 4 Всего: 56 |
тогда уж, \b([a-zA-Z]+)\s*:= т.к. Кроме того, можно долго спорить о том, как может выглядеть слово на латинице, оно отнюдь не ограничено одними буквами, в случае идентификаторов всё проще, они однозначно детерминируются синтаксисом конкретного языка программирования. -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
WaReZMEN |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 683 Регистрация: 9.6.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: 3 |
язык паскаль мне нужно из кода выделить только переменые проблема в том что они в var не объявлены а просто в коде попадаются типа как в байсике де хачу там пишу... И равно не нужно выносить...
Добавлено через 9 минут и 19 секунд source777, если как ты говориш то при такой ABC := 'fdsfdsf'; FGHJ.DFR :='dfdgdfg'; строке получится и ABC и DFR а далжно получится только ABC потому что у DFR в начале стоит точка. Чуть не забыл если точка не слитно со словом то оно считается без точки (FGHJ. DFR :='dfdgdfg' мы получим DFR). Это сообщение отредактировал(а) WaReZMEN - 13.1.2009, 20:08 |
|||
|
||||
source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 4 Всего: 56 |
(\s|^)([a-zA-Z]+)\s*:=, нужное слово будет в RegExp.Match[2].
-------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
WaReZMEN |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 683 Регистрация: 9.6.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: 3 |
О спасибо!!! а можно расшифровать и пояснить почему RegExp.Match[2]?
|
|||
|
||||
source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 4 Всего: 56 |
Да, на здоровье.
RegExp.Match[2] потому, что нужное тебе слово находится внутри второй пары круглых скобок в регулярке. А расшифровка примерно такая: (пробельный символ или начало строки)(один или более символов из набора латинских букв) любое_число_пробельных_символов := -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
WaReZMEN |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 683 Регистрация: 9.6.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: 3 |
Снова к вам
![]() На этот раз хочу получить значение между скобками [ ] делаю так \[(.*)\] в результате получаю все но мне нужно те значения из скобок которые содержат a-zA-Z а также _ " . делаю так \[([a-zA-Z0-9_"\.]+)\] подскажите где ошибка? P.S. точек и "_" может быть от 1-~ а вот кавычки " только 2 Добавлено через 7 минут и 38 секунд Вот строка для теста Итого: [round([SUMM]*100)/100] [OrdGridsDM.IBtblOrders."ORD_CURRENCY"][txt] должно получится [OrdGridsDM.IBtblOrders."ORD_CURRENCY"] |
|||
|
||||
source777 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 4 Всего: 56 |
Давай-ка ты будешь яснее объяснять что нужно...
А именно: 1) пример текста 2) твоё регулярное выражение 3) найденные им совпадения 4) совпадения, которые регэксп должен был бы найти Пример: 1)
2) \[([a-zA-Z0-9_".]+)\] 3) [Java] [_".NET"] 4) [Java] [_".NET"] Добавлено через 2 минуты и 18 секунд
Почему? Должно получится: [SUMM] [OrdGridsDM.IBtblOrders."ORD_CURRENCY"] [txt] либо ты плохо объяснил, что тебе нужно... Добавлено через 6 минут и 37 секунд Вообще по описанию похоже, что ищется такое выражение: \[([\w.]*("[\w.]+")?[\w.]*)\] -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
||||
|
|||||
WaReZMEN |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 683 Регистрация: 9.6.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: 3 |
Вы правы я не совсем точно сказал...
в строке обязательно будут a-zA-Z " . а вот 0-9 и _ не обязательно но могут. |
|||
|
||||
source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 4 Всего: 56 |
Тогда так: \[([\w.]*"[\w.]+"[\w.]*)\]
Эта регулярка найдёт выражение в квадратных скобках, если оно содержит две и только две двойных кавычки, внутри и снаружи которых могут быть латинские буквы, цифры, точки и знаки подчёркивания, кроме того внутри двойных кавычек должен быть хотя бы 1 символ... P.S. Не отклоняйся от предложенного формата описания того, что нужно, поверь, он нагляднее любых слов. -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
WaReZMEN |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 683 Регистрация: 9.6.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: 3 |
||||
|
||||
source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 4 Всего: 56 |
Это общий совет на будущее, когда спрашиваешь про регулярные выражения, описывай проблему в формате 1) пример текста 2) твоё регулярное выражение 3) найденные им совпадения 4) совпадения, которые регэксп должен был бы найти так тебя быстрее поймут, да и ответить правильно будет проще, т.к. появляется чёткий и однозначный критерий правильности: п.3 совпадает с п.4. ![]()
![]() P.S. ты ещё рекурсивных регэкспов не встречал, вот там реальная жесть ![]() -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |