समान RegExp उपयोग के बीच अंतर को समझने के लिए की आवश्यकता है, जहां 1 काम करता है और 1 नहीं है

वोट
0

मैं stackoverflow का एक बड़ा प्रशंसक हूँ, हालांकि मैं नियमित अभिव्यक्ति का उपयोग कर के लिए नया हूँ। मैं एक qnd खोज उपयोगिता है कि मैं मुझे लगता है / रिपोर्ट चीजें मैं स्रोत कोड में के लिए खोज कर रहा हूँ मदद करने के लिए लिखा है। मैं पता लगाना क्या मेरी पैटर्न खोज है कि एक मैच स्ट्रिंग है कि दो दोहरे उद्धरण चिह्नों के बीच सभी पाठ शामिल नहीं लौटा रहा है साथ कुछ गड़बड़ है के साथ एक समस्या हो रही है। एक खोज में यह काम करता है (सत्र चर की तलाश में), लेकिन इसी तरह की एक में (रीडायरेक्ट की तलाश में) ऐसा नहीं है।

यहां एक नमूना aspx.vb फ़ाइल है कि मैं के खिलाफ परीक्षण कर रहा हूँ है:

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 मैच:

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)

विफल मिलान:

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.

लक्षण:

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.

नमूना VB कोड है:

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

मैं कुछ संकेत के लिए देख रहा हूँ समझने के लिए क्यों मेरे सरल खोज केवल एक विशेष पैटर्न के साथ काम करता है, न कि किसी अन्य है कि केवल प्रमुख पाठ में परिवर्तन स्पष्ट रूप से मिलान किया जा करने के लिए।

02/12/2019 को 23:51
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

समान RegExp उपयोग के बीच अंतर को समझने के लिए की आवश्यकता है, जहां 1 काम करता है और 1 नहीं है

वोट
0

मैं stackoverflow का एक बड़ा प्रशंसक हूँ, हालांकि मैं नियमित अभिव्यक्ति का उपयोग कर के लिए नया हूँ। मैं एक qnd खोज उपयोगिता है कि मैं मुझे लगता है / रिपोर्ट चीजें मैं स्रोत कोड में के लिए खोज कर रहा हूँ मदद करने के लिए लिखा है। मैं पता लगाना क्या मेरी पैटर्न खोज है कि एक मैच स्ट्रिंग है कि दो दोहरे उद्धरण चिह्नों के बीच सभी पाठ शामिल नहीं लौटा रहा है साथ कुछ गड़बड़ है के साथ एक समस्या हो रही है। एक खोज में यह काम करता है (सत्र चर की तलाश में), लेकिन इसी तरह की एक में (रीडायरेक्ट की तलाश में) ऐसा नहीं है।

यहां एक नमूना aspx.vb फ़ाइल है कि मैं के खिलाफ परीक्षण कर रहा हूँ है:

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 मैच:

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")

विफल मिलान:

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.

लक्षण:

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.

नमूना VB कोड है:

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

मैं कुछ संकेत के लिए देख रहा हूँ समझने के लिए क्यों मेरे सरल खोज केवल एक विशेष पैटर्न के साथ काम करता है, न कि किसी अन्य है कि केवल प्रमुख पाठ में परिवर्तन स्पष्ट रूप से मिलान किया जा करने के लिए।

02/12/2019 को 23:51
का स्रोत उपयोगकर्ता

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