यहाँ एक उदाहरण है:

Dim myString As String = "£/GrocerySMilk:Potatoes:Garlic£/Grocery:Tomatoes:Salad:Bread£/Grocery"

मुझे £/GroceryS से शुरू होने वाले और £/Grocery के साथ समाप्त होने वाले भागों को प्राप्त करने की आवश्यकता है।

उदाहरण के बाद, वे भाग:

  1. Milk:Potatoes:Garlic
  2. और Tomatoes:Salad:Bread

चूंकि यह प्राप्त करने के लिए भागों की एक अपरिभाषित संख्या हो सकती है, इसलिए मुझे नियमित अभिव्यक्ति का उपयोग करने की आवश्यकता है।

मैंने क्या प्रयास किया है:

Sub showMatch(ByVal text As String, ByVal expr As String)
    Console.WriteLine("My regular expression: " + expr)
    Dim collection As MatchCollection = Regex.Matches(text, expr)
    Dim match As Match

    For Each match In collection
        Console.WriteLine(match)
    Next match
End Sub

Sub Main()
    Dim myString As String = "£/GrocerySMilk:Potatoes:Garlic£/Grocery:Tomatoes:Salad:Bread£/Grocery"
    Console.WriteLine("Matching words that start with '£/GroceryS' and ends with '£/Grocery'")
    showMatch(myString, "£/GroceryS(.*?)£/Grocery")
    Console.ReadKey()
End Sub

टिप्पणी: मैंने अन्य रूपों की कोशिश की है लेकिन अभी तक कुछ भी काम नहीं करता है।

1
david-so 10 सितंबर 2020, 17:30

1 उत्तर

सबसे बढ़िया उत्तर

रेगेक्स पैटर्न (.*?)£\/GroceryS?:? प्रत्येक मैच के पहले समूह में उन हिस्सों को निकालता है।

Sub Main()
    Dim myString = "£/GrocerySMilk:Potatoes:Garlic£/Grocery:Tomatoes:Salad:Bread£/Grocery"
    Dim ptrn = "(.*?)£\/GroceryS?:?"

    Console.WriteLine("Matching words that start with '£/GroceryS' and ends with '£/Grocery'")
    showMatch(myString, ptrn)
    Console.ReadKey()
End Sub

Sub showMatch(ByVal text As String, ByVal expr As String)
    Console.WriteLine($"My regular expression: {expr}")

    For Each m As Match In Regex.Matches(text, expr, RegexOptions.IgnoreCase)
        Console.WriteLine(m.Groups(1).Value)
    Next
End Sub

यह रहा एक ऑनलाइन परीक्षण

2
dr.null 10 सितंबर 2020, 19:20