Regex end modifier not returning results in a Go program

General Tech Learning Aids/Tools 2 years ago

0 2 0 0 0 tuteeHUB earn credit +10 pts

5 Star Rating 1 Rating

Posted on 16 Aug 2022, this text provides information on Learning Aids/Tools related to General Tech. Please note that while accuracy is prioritized, the data presented might not be entirely correct or up-to-date. This information is offered for general knowledge and informational purposes only, and should not be considered as a substitute for professional advice.

Take Quiz To Earn Credits!

Turn Your Knowledge into Earnings.

tuteehub_quiz

Answers (2)

Post Answer
profilepic.png
manpreet Tuteehub forum best answer Best Answer 2 years ago

 

I have a simple program in Go to aid in learning regular expressions. It runs in an infinite loop and has 2 channels, one which is used to provide input (input contains regex pattern and subject), and the second one, which provides the output.

usage: main.exe (cat)+ catcatdog

However there is propably something wrong in the code, as i can't seem to get any results with the $modifier.

For example, i expect "cat" output from

main.exe cat$ cat\ndog

yet receive zero results.

Code:

package main

import (
    "fmt"
    "regexp"
    "bufio"
    "os"
    "strings"
)

type RegexRequest struct {
    regex string
    subject string
}

func main() {
    regexRequests := make(chan *RegexRequest)
    defer close(regexRequests)

    regexAnswers, err := createResolver(regexRequests)
    defer close(regexAnswers)
    if(err != nil) { // TODO: Panics when exited via ctrl+c
        panic(err)
    }

    interact(regexRequests, regexAnswers)
}

func interact(regexRequests chan *RegexRequest, regexAnswers chan []string) {
    for {
        fmt.Println("Enter regex and subject: ")
        reader := bufio.NewReader(os.Stdin)

        line, err := reader.ReadString('\n')
        if(err != nil) {
            panic(err)
        }

        regAndString := strings.SplitN(line, " ", 2);
        if len(regAndString) != 2 {
            fmt.Println("Invalid input, expected [regex][space][subject]")
            continue
        }

        regexRequests <- &RegexRequest{ regAndString[0], regAndString[1] }
        result := <- regexAnswers
        var filteredResult []string
        for _, element := range result {
            if(element != "") {
                filteredResult = append(filteredResult, element)
            } else {
                filteredResult = append(filteredResult, "EMPTY");
            }
        }

        fmt.
                                                
                                                
0 views
0 shares
profilepic.png
manpreet 2 years ago

Check your regex pattern. For example,

Enter regex and subject: 
cat$ cat\ndog

Enter regex and subject: 
^cat cat\ndog         
cat

0 views   0 shares

No matter what stage you're at in your education or career, TuteeHub will help you reach the next level that you're aiming for. Simply,Choose a subject/topic and get started in self-paced practice sessions to improve your knowledge and scores.