Проблемы с Regexp

  • Автор темы ispanets
  • Дата начала
I

ispanets

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

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 231
17
#2
Какую альтернативу можно рассматривать для использования на UNIX-платформе
альтернативу чего?
вы отчетность строите или что?
какой функционал необходим?
вопрос из разряда, "нашел колеса от белаза, хочу прикрутить - куда посоветуете"
 
I

ispanets

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

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 231
17
#4
проверка правильности электронного адреса, имени файла, поиска номера документа при нумерации
это всё можно сделать внутри лотуса не используя ничего стороннего
к чему это?
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#5
поковыряй java
в лотусскрипте я не помню регулярных выражений, по-моему не поддерживает.
если надо будет использовать это со скриптом, то, скорее всего, через мост лс-ява можно связать ява-библиотеку с классом оберткой...
есть пользователь lmike, у него спроси, еще есть TIA, но я не помню от него ява изысков (уж простите, если пропустил)
 
I

ispanets

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


поковыряй java
в лотусскрипте я не помню регулярных выражений, по-моему не поддерживает.
если надо будет использовать это со скриптом, то, скорее всего, через мост лс-ява можно связать ява-библиотеку с классом оберткой...
есть пользователь lmike, у него спроси, еще есть TIA, но я не помню от него ява изысков (уж простите, если пропустил)
спасибо. эх, я к сожалению с явой не дружу
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 231
17
#7
^([_\.\d\w-]+)@([\d\w][_\.\d\w-]+).(\w{2,4})$
уточняю чтобы не упустить что-то
наличие собаки, после неё точки, и наличие доменной зоны 2-4 символа, это всё? ;)

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

ispanets

#8
уточняю чтобы не упустить что-то
наличие собаки, после неё точки, и наличие доменной зоны 2-4 символа, это всё? ;)

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

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#9
спасибо. эх, я к сожалению с явой не дружу
я думаю, что особых навыков в яве для этого иметь не придется...
немного хелп порыть. главное выяснить есть ли возможность реализовать это вообще...

вот посмотри тут
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."
 
I

ispanets

#10
я думаю, что особых навыков в яве для этого иметь не придется...
немного хелп порыть. главное выяснить есть ли возможность реализовать это вообще...

вот посмотри тут
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."
Спасибо за ссылку
Как я понимаю, реализовать точно можно на JS/XPages
 

Omh

Lotus team
04.07.2007
2 210
1
#12
Ну как (жалкое?) подобие RegExp можно попробовать заюзать оператор Like.
Во всяком случае, приведённые выше задачи он покрыть может.
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 570
263
#13
в JS есть регэкспы свои
в java - апачевская библа jakarta oro (на нсфтул, юзают именно её)
на никсах - воще мона вызывать скирипт с параметрами и забирать резалт из файла/порта/сокета

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

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

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#14
офф: к стати, автору темы замечание, задача поставлена не совсем корректно, в первом посте.
я вообще для себя RegExp расшифровал как Registry Explorer )))
 
I

ispanets

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

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

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 231
17
#16
я вообще для себя RegExp расшифровал как Registry Explorer
я кстати тоже :)

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

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 231
17
#18
^([_\.\d\w-]+)@([\d\w][_\.\d\w-]+).(\w{2,4})$
Можете привести пример на LS?
нужно написать функцию проверки, возвращающую 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
 
I

ispanets

#19
^([_\.\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
спасибо
самое обидное, что если рассматривать случай когда пользователь может менять выражение или добавлять новые, решение реально выходит за рамки гибкого, и придется переписывать код раз за разом. Ну или разрастется достаточно сильно. Т.е. это не одна строчка вида RegExp("expression", "flags")
 

Omh

Lotus team
04.07.2007
2 210
1
#20
ToxaRat
Чёт ты погорячился
Хватит и
Код:
isEmail = CheckEMail Like "*@*.*"
Если надо доп проверки, но тожно так:
Код:
isEmail = CheckEMail Like "[A-Z,a-z,0-9,_]@[A-Z,a-z,0-9,_].[A-Z,a-z]"
Ну можно ещё остальные разрешённые символы перечислить (не помню все из башки)