Проблемы с Regexp

Тема в разделе "Lotus - Программирование", создана пользователем ispanets, 27 авг 2009.

  1. ispanets

    ispanets Гость

    Доброго!
    Есть приложение, крутится на 8.5FP1/Win32.
    В нем есть код вида, использующий MS компоненты:
    Set Me.RegExpObject = CreateObject("VBScript.RegExp") и т.д.
    Соответственно работает только на Win32. Какую альтернативу можно рассматривать для использования на UNIX-платформе
    Спасибо
     
  2. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    альтернативу чего?
    вы отчетность строите или что?
    какой функционал необходим?
    вопрос из разряда, "нашел колеса от белаза, хочу прикрутить - куда посоветуете"
     
  3. ispanets

    ispanets Гость

    Причем тут ваши колеса?
    Как пример использования регулярных выражений - проверка правильности электронного адреса, имени файла, поиска номера документа при нумерации.
    Вопрос - что можно использовать в Lotus на *NIX платформе вместо VBS для регулярных выражений и есть ли такой опыт
     
  4. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    это всё можно сделать внутри лотуса не используя ничего стороннего
    к чему это?
     
  5. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    поковыряй java
    в лотусскрипте я не помню регулярных выражений, по-моему не поддерживает.
    если надо будет использовать это со скриптом, то, скорее всего, через мост лс-ява можно связать ява-библиотеку с классом оберткой...
    есть пользователь lmike, у него спроси, еще есть TIA, но я не помню от него ява изысков (уж простите, если пропустил)
     
  6. ispanets

    ispanets Гость

    Ок. Тогда скажите пожалуйста, каким образом на LS можно проверить соответствие электронного адреса по такому выражению:
    ^([_\.\d\w-]+)@([\d\w][_\.\d\w-]+).(\w{2,4})$


    спасибо. эх, я к сожалению с явой не дружу
     
  7. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    уточняю чтобы не упустить что-то
    наличие собаки, после неё точки, и наличие доменной зоны 2-4 символа, это всё? ;)

    я уж подумал сделать проверку и послать запрос SMTP на проверку реально ли существует мыло :wacko:
     
  8. ispanets

    ispanets Гость

    в целом да. Но таких выражений достаточно много
    проверка имени файла например:
    ^([-\d\w_ А-Яа-я]+)\.\S+$
     
  9. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    я думаю, что особых навыков в яве для этого иметь не придется...
    немного хелп порыть. главное выяснить есть ли возможность реализовать это вообще...

    вот посмотри тут
    http://www.nsftools.com/tips/NotesTips.htm
    ищи там LS2J Examples Database
    написано, что там есть "An agent that allows you to use regular expressions in LotusScript. I wasn't intending to teach you how to use regular expressions if you've never used them before, so I kept the examples reasonably simple."
     
  10. ispanets

    ispanets Гость

    Спасибо за ссылку
    Как я понимаю, реализовать точно можно на JS/XPages
     
  11. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    про икспэйджис я ничего не знаю...
     
  12. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Ну как (жалкое?) подобие RegExp можно попробовать заюзать оператор Like.
    Во всяком случае, приведённые выше задачи он покрыть может.
     
  13. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    в JS есть регэкспы свои
    в java - апачевская библа jakarta oro (на нсфтул, юзают именно её)
    на никсах - воще мона вызывать скирипт с параметрами и забирать резалт из файла/порта/сокета

    для универсальности java лучше всего

    причем, в версии 1.4 (а именно она с 7-ки) есть пакедж:
    http://java.sun.com/j2se/1.4.2/docs/api/ja...ge-summary.html
    на нсфтул писали "давно" и тогда был единственный способ
     
  14. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    офф: к стати, автору темы замечание, задача поставлена не совсем корректно, в первом посте.
    я вообще для себя RegExp расшифровал как Registry Explorer )))
     
  15. ispanets

    ispanets Гость

    Спасибо за ответы, буду пробовать на java

    Кас. постановки задачи, извиняюсь, где-то был не прав.
    P.S. Регуля́рные выраже́ния (англ. regular expressions, сокр. RegExp, RegEx, жарг. регэ́кспы или ре́гексы) — система синтаксического разбора текстовых фрагментов по формализованному шаблону
     
  16. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    я кстати тоже :)

    полностью реализуемо как средствами лотус-скрипт так и собаками (про яву вообще молчу)
     
  17. ispanets

    ispanets Гость

    Можете привести пример на LS?
     
  18. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    ^([_\.\d\w-]+)@([\d\w][_\.\d\w-]+).(\w{2,4})$
    нужно написать функцию проверки, возвращающую True/False
    Function IsEmail(s1 as string) as bolean
    IsEmail = false
    if instr(s1, "@")=0 then exit function
    if instr(s1, ".")=0 then exit function
    if len(strleft(s1, "@"))=0 exit function
    if len(strright(s1, "@"))=0 exit function
    if len(strright(strright(s1, "@"), ".")=0 exit function
    '' куча подобных проверок, писал на вскидку, где-то подобное было но влом искать....

    IsEmail = true
    end function
     
  19. ispanets

    ispanets Гость

    спасибо
    самое обидное, что если рассматривать случай когда пользователь может менять выражение или добавлять новые, решение реально выходит за рамки гибкого, и придется переписывать код раз за разом. Ну или разрастется достаточно сильно. Т.е. это не одна строчка вида RegExp("expression", "flags")
     
  20. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    ToxaRat
    Чёт ты погорячился
    Хватит и
    Код (Text):
    isEmail = CheckEMail Like "*@*.*"
    Если надо доп проверки, но тожно так:
    Код (Text):
    isEmail = CheckEMail Like "[A-Z,a-z,0-9,_]@[A-Z,a-z,0-9,_].[A-Z,a-z]"
    Ну можно ещё остальные разрешённые символы перечислить (не помню все из башки)
     
Загрузка...

Поделиться этой страницей