Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Регулярные выражения  [new]
NNNata:)
Member

Откуда:
Сообщений: 146
Привет!
Не могли бы помочь с использованием регулярных выражений. Я пишу DTSPackage, в нем использую компонент ActiveX Script Task (на Visual Basic Script), так вот сам вопрос и заключается как использовать мое построенное регулярное выражение в программе.
Имеем регулярное выражение <tr>a.*\d\s</tr>
Тестируемая строка <tr>abcd9 </tr>
Мне нужно как-то вытащить число(в данном случае 9).
Спасибо
8 ноя 05, 16:22    [2048103]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Разве ф-ия InStr не подойдет?
9 ноя 05, 06:56    [2049790]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения  [new]
NNNata:)
Member

Откуда:
Сообщений: 146
tpg
Разве ф-ия InStr не подойдет?

Не совсем, перед этим по сути у меня может быть много цифр, а мне нужна именно последняя цифра перед пробельными символами
9 ноя 05, 09:31    [2050041]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения  [new]
aleks2
Guest
NNNata:)
tpg
Разве ф-ия InStr не подойдет?

Не совсем, перед этим по сути у меня может быть много цифр, а мне нужна именно последняя цифра перед пробельными символами


if PATINDEX('%[0-9] ',aStr)>0
SUBSTRING(aStr, PATINDEX('%[0-9] ',aStr), 1)
9 ноя 05, 09:34    [2050049]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения  [new]
NNNata:)
Member

Откуда:
Сообщений: 146
aleks2

if PATINDEX('%[0-9] ',aStr)>0
SUBSTRING(aStr, PATINDEX('%[0-9] ',aStr), 1)

Не подходит - выдает ошибку на PATINDEX при компиляции
9 ноя 05, 09:46    [2050092]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
PATINDEX - это функция T-SQL, а не VBS.
9 ноя 05, 09:47    [2050097]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения  [new]
Glory
Member

Откуда:
Сообщений: 104760
NNNata:)
Привет!
Не могли бы помочь с использованием регулярных выражений. Я пишу DTSPackage, в нем использую компонент ActiveX Script Task (на Visual Basic Script), так вот сам вопрос и заключается как использовать мое построенное регулярное выражение в программе.
Имеем регулярное выражение <tr>a.*\d\s</tr>
Тестируемая строка <tr>abcd9 </tr>
Мне нужно как-то вытащить число(в данном случае 9).
Спасибо

Читаем хелп по VBScript про RegExp Object и смотрим приведенные там примеры
9 ноя 05, 09:49    [2050104]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
NNNata:)
tpg
Разве ф-ия InStr не подойдет?

Не совсем, перед этим по сути у меня может быть много цифр, а мне нужна именно последняя цифра перед пробельными символами
Ну, так InStr ищет вхождение одной СТРОКИ в другой - сделайте поиск строки "9 " (пробел после 9).
9 ноя 05, 09:49    [2050109]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения  [new]
NNNata:)
Member

Откуда:
Сообщений: 146
Glory

Читаем хелп по VBScript про RegExp Object и смотрим приведенные там примеры

Это я и делаю
9 ноя 05, 10:04    [2050172]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения  [new]
Glory
Member

Откуда:
Сообщений: 104760
Ну так сначала находим совпадение с шаблоном <tr>a.*\d\s</tr>.
Для полученной подстроки <tr>abcd9 </tr> применяем поиск по новому шаблону - для поиска только цифры.
9 ноя 05, 10:12    [2050216]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения  [new]
NNNata:)
Member

Откуда:
Сообщений: 146
Glory

Читаем хелп по VBScript про RegExp Object и смотрим приведенные там примеры

У меня что-то не идет может подскажите почему?
Set myRegExp=CREATEOBJECT("Scripting.RegExp") 
	

	myRegExp.Multiline =True
	myRegExp.Global =True
	myRegExp.IgnoreCase =True
             meRegExp.Pattern = "<tr>a.*\d\s</tr>"  
Выдает ошибку, что не может создать объект Scripting.RegExp
9 ноя 05, 10:20    [2050248]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения  [new]
jimmers
Member

Откуда: Санкт-Петербург - New York City
Сообщений: 5069
Set Rexp = CreateObject("VBScript.RegExp")
9 ноя 05, 10:24    [2050268]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения  [new]
Дикий Билл
Member

Откуда:
Сообщений: 9568
Надо ставить АктивПерл. И использовать его в ДТС. По крайней мере планирую :) В смысле поставил, но еще не было случая использовать.
----------------------------------
- О каком Диком Билле ты говоришь?
- Есть лишь один Дикий Билл.
9 ноя 05, 10:29    [2050281]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения  [new]
Glory
Member

Откуда:
Сообщений: 104760
Set myRegExp=CREATEOBJECT("Scripting.RegExp")
Я так понял, что примеры из хелпа мы не разбираем а придумываем сами ?

Set myRegExp= New RegExp
myRegExp.Multiline =True
myRegExp.Global =True
myRegExp.IgnoreCase =True
meRegExp.Pattern = "<tr>a.*\d\s</tr>"
9 ноя 05, 10:30    [2050282]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения  [new]
NNNata:)
Member

Откуда:
Сообщений: 146
Glory
Set myRegExp=CREATEOBJECT("Scripting.RegExp")
Я так понял, что примеры из хелпа мы не разбираем а придумываем сами ?

Почему, разбираем и примеры!!
9 ноя 05, 10:35    [2050311]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения  [new]
Glory
Member

Откуда:
Сообщений: 104760
NNNata:)
Glory
Set myRegExp=CREATEOBJECT("Scripting.RegExp")
Я так понял, что примеры из хелпа мы не разбираем а придумываем сами ?

Почему, разбираем и примеры!!

Из каких примеров тогда взято Set myRegExp=CREATEOBJECT("Scripting.RegExp") ???
9 ноя 05, 10:36    [2050318]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения  [new]
NNNata:)
Member

Откуда:
Сообщений: 146
Только вот не совсем внимательна была, вместо Scripting надо было VBScript писать
Set myRegExp= CREATEOBJECT("VBScript.RegExp")

А через New тоже идет:)
9 ноя 05, 10:37    [2050323]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить