Regular expressions - backreferences ?

3 отговора 156 прегледа
#1

Regular expressions - backreferences ?

Може ли във ВБ6 да се използват Regular expressions и да се помнят/използват части от match - овете? Това което нормално се нарича backreference и за да се запомни и използва по-нататък се загражда в ( ) скоби?
Например в жаваскрипт, John (Smith|Doe) ще мач-не и John Smith и John Doe, и ще запомни второто име - което после може да се реферира като \1 (\0 e целия мач)
Обаче нещо не мога да постигна същото във ВБ, някаква идея?

Отговор
в отговор на microsoft #2

Re: Regular expressions - backreferences ?

za tova li pitash :
 

Sub SetRx(rx, sPattern)
Set rx = CreateObject("VBScript.RegExp")
rx.Global = True
rx.IgnoreCase = True
rx.Pattern = sPattern
End Sub

' Dim rxFunc As VBScript_RegExp.RegExp
' Dim m As MatchCollection

SetRx rxFunc, "\d+\s+\d+\s+\d+%\s+\d+/\d+/\d+\s+\d+:\d+\s+(.+)[\f\r]"
Set m = rxFunc.Execute(s)
sFileName = rxFunc.Replace(m.Item(0), "$1")



ili za tova - primera e ot vs2003 i ne znam kak se pravi s COM obekta, bi triabvalo da moze:
{:i} \= \1 \&

'hvasta s = s & ....


Отговор
в отговор на VBProgrammer #3

Stava ...

SetRx rxFunc, "(\w) \= \1"


[линк]

Отговор
в отговор на VBProgrammer #4

Re: Stava ...

огромни thanks-ове !
Точно това ми трябваше, по-специално SubMatches collection ми върши чудесна работа. Рових много но никъде не беше споменато


Отговор