开发者

using classic asp for regular expression

We have some Classic asp sites, and i'm working on them a lil' bit, and开发者_高级运维 I was wondering how can I write a regular expression check, and extract the matched expression:

the expression I have is in the script's name so Let's say this

Response.Write Request.ServerVariables("SCRIPT_NAME")

Prints out:

review_blabla.asp
review_foo.asp
review_bar.asp

How can I get the blabla, foo and bar from there?

Thanks.


Whilst Yots' answer is almost certainly correct, you can achieve the result you are looking for with a lot less code and somewhat more clearly:

'A handy function i keep lying around for RegEx matches'
Function RegExResults(strTarget, strPattern)

    Set regEx = New RegExp
    regEx.Pattern = strPattern
    regEx.Global = true
    Set RegExResults = regEx.Execute(strTarget)
    Set regEx = Nothing

End Function

'Pass the original string and pattern into the function and get a collection object back'
Set arrResults = RegExResults(Request.ServerVariables("SCRIPT_NAME"), "review_(.*?)\.asp")

'In your pattern the answer is the first group, so all you need is'
For each result in arrResults
    Response.Write(result.Submatches(0))
Next

Set arrResults = Nothing

Additionally, I have yet to find a better RegEx playground than Regexr, it's brilliant for trying out your regex patterns before diving into code.


You have to use the Submatches Collection from the Match Object to get your data out of the review_(.*?)\.asp Pattern

Function getScriptNamePart(scriptname)
    dim RegEx : Set RegEx = New RegExp
    dim result : result = ""
    With RegEx
        .Pattern = "review_(.*?)\.asp"
        .IgnoreCase = True
        .Global = True
    End With

    Dim Match, Submatch
    dim Matches : Set Matches = RegEx.Execute(scriptname)    
    dim SubMatches
    For Each Match in Matches
        For Each Submatch in Match.SubMatches
                result = Submatch
        Exit For
        Next
    Exit For
    Next

    Set Matches = Nothing
    Set SubMatches = Nothing
    Set Match = Nothing
    Set RegEx = Nothing

    getScriptNamePart = result
End Function


You can do

review_(.*?)\.asp

See it here on Regexr

You will then find your result in capture group 1.


You can use RegExp object to do so. Your code gonna be like this:

Set RegularExpressionObject = New RegExp
RegularExpressionObject.Pattern = "review_(.*)\.asp"
matches = RegularExpressionObject.Execute("review_blabla.asp")

Sorry, I can't test code below right now. Check out usage at MSDN http://msdn.microsoft.com/en-us/library/ms974570.aspx

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜