Benötigen Sie Hilfe bei dem Unterschied zwischen ähnlicher RegExp Nutzung wobei 1 Werk und 1 nicht verstehen

stimmen
0

Ich bin ein großer Fan von Stackoverflow, aber ich bin neu reguläre Ausdrücke zu verwenden. Ich habe ein QND Suchprogramm, dass ich schrieb mir zu helfen / Bericht Dinge, die ich für den Code in Quelle bin auf der Suche. Ich habe ein Problem mit, herauszufinden, was mit meinem Muster Such falsch das ist kein Spiel String zurückkehrt, die die gesamten Text zwischen zwei doppelten Anführungszeichen enthält. In einer es funktioniert (die Suche nach Session-Variablen) suchen, aber in einem ähnlichen (Suche nach Umleitungen) ist es nicht.

Hier ist ein Beispiel aspx.vb Datei, dass ich die Prüfung gegen:

Partial Class _1
    Inherits System.Web.UI.Page
    Private strSecurityTest As String = 
    Private strUserId As String = 
    Private strPassword As String = 
    Private strMyName As String = 

    Private Sub sample()
        strSecurityTest = Session(UserID)

        If strSecurityTest = NeedsLogin Or
            strSecurityTest =  Or
            Session(SecureCount) = 0 Or
            Session(CommandName) <> strMyName Then
            Server.Transfer(WebApLogin.aspx)
        End If
    End Sub
End Class

Sucessful Spiel:

When I look for all occurances of Session(*) with pattern ==> Session\(\\w*\\)
I get correct results.  Noting the above source code, I get 3 matches returned:

Session(UserID)
Session(SecureCount)
Session(CommandName)

Fehlgeschlagen Übereinstimmung:

However when I try another search by replacing Session with Transfer ==> Transfer\(\\w*\\)
nothing is returned.  

I have also tried these matching patterns:
Server.Transfer(*) ==> Server\.Transfer\(\\w*\\)
*Server.Transfer(*) ==> \w*Server\.Transfer\(\\w*\\)

Each of these doesn't return any matches.

In my live code I tried removing vbCr, vbLf, vbCrLf before the regex match, but still no matches
were found.

Symptom:

A symptom that I see is when I remove the text from the right side of the pattern, up to and
including the \w* ... then the search finds matches ==> Transfer\(\  However since the search 
is now open-ended ... I can't capture the value between the double quotes that I want.

Beispiel VB-Code ist:

Private Sub TestRegExPattern(wData As String, wPattern As String, bMatchCase As Boolean)

    '
    ' Invoke the Match method.
    '                            
    Dim m As Match = Nothing
    If Not bMatchCase Then
        m = Regex.Match(wData, wPattern, RegexOptions.IgnoreCase)
    Else
        m = Regex.Match(wData, wPattern)
    End If

    '
    ' If first match found process and look for more
    '
    If (m.Success) Then
        '
        '   Process match
        '

        ' Get next match.
        While m.Success
            m = m.NextMatch()
            If m.Success Then
                '
                '   Process additional matches
                '
            End If
        End While
    End If
    m = nothing
End Sub

Ich suche für einige Hinweise zu verstehen, warum meine einfache Suche nur mit einem bestimmten Muster arbeitet, und nicht eine andere, die nur die führenden Textänderungen explizit angepasst werden.

Veröffentlicht am 02/12/2019 um 23:51
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

Benötigen Sie Hilfe bei dem Unterschied zwischen ähnlicher RegExp Nutzung wobei 1 Werk und 1 nicht verstehen

stimmen
0

Ich bin ein großer Fan von Stackoverflow, aber ich bin neu reguläre Ausdrücke zu verwenden. Ich habe ein QND Suchprogramm, dass ich schrieb mir zu helfen / Bericht Dinge, die ich für den Code in Quelle bin auf der Suche. Ich habe ein Problem mit, herauszufinden, was mit meinem Muster Such falsch das ist kein Spiel String zurückkehrt, die die gesamten Text zwischen zwei doppelten Anführungszeichen enthält. In einer es funktioniert (die Suche nach Session-Variablen) suchen, aber in einem ähnlichen (Suche nach Umleitungen) ist es nicht.

Hier ist ein Beispiel aspx.vb Datei, dass ich die Prüfung gegen:

Partial Class _1
    Inherits System.Web.UI.Page
    Private strSecurityTest As String = ""
    Private strUserId As String = ""
    Private strPassword As String = ""
    Private strMyName As String = ""

    Private Sub sample()
        strSecurityTest = Session("UserID")

        If strSecurityTest = "NeedsLogin" Or
            strSecurityTest = "" Or
            Session("SecureCount") = 0 Or
            Session("CommandName") <> strMyName Then
            Server.Transfer("WebApLogin.aspx")
        End If
    End Sub
End Class

Sucessful Spiel:

When I look for all occurances of Session("*") with pattern ==> Session\(\"\w*\"\)
I get correct results.  Noting the above source code, I get 3 matches returned:

Session("UserID")
Session("SecureCount")
Session("CommandName")

Fehlgeschlagen Übereinstimmung:

However when I try another search by replacing "Session" with "Transfer" ==> Transfer\(\"\w*\"\)
nothing is returned.  

I have also tried these matching patterns:
Server.Transfer("*") ==> Server\.Transfer\(\"\w*\"\)
*Server.Transfer("*") ==> \w*Server\.Transfer\(\"\w*\"\)

Each of these doesn't return any matches.

In my live code I tried removing vbCr, vbLf, vbCrLf before the regex match, but still no matches
were found.

Symptom:

A symptom that I see is when I remove the text from the right side of the pattern, up to and
including the \w* ... then the search finds matches ==> Transfer\(\"  However since the search 
is now open-ended ... I can't capture the value between the double quotes that I want.

Beispiel VB-Code ist:

Private Sub TestRegExPattern(wData As String, wPattern As String, bMatchCase As Boolean)

    '
    ' Invoke the Match method.
    '                            
    Dim m As Match = Nothing
    If Not bMatchCase Then
        m = Regex.Match(wData, wPattern, RegexOptions.IgnoreCase)
    Else
        m = Regex.Match(wData, wPattern)
    End If

    '
    ' If first match found process and look for more
    '
    If (m.Success) Then
        '
        '   Process match
        '

        ' Get next match.
        While m.Success
            m = m.NextMatch()
            If m.Success Then
                '
                '   Process additional matches
                '
            End If
        End While
    End If
    m = nothing
End Sub

Ich suche für einige Hinweise zu verstehen, warum meine einfache Suche nur mit einem bestimmten Muster arbeitet, und nicht eine andere, die nur die führenden Textänderungen explizit angepasst werden.

Beantwortet am 02/12/2019 um 23:51
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more