Categories

See More
Popular Forum

MBA (4887) B.Tech (1769) Engineering (1486) Class 12 (1030) Study Abroad (1004) Computer Science and Engineering (988) Business Management Studies (865) BBA (846) Diploma (746) CAT (651) B.Com (648) B.Sc (643) JEE Mains (618) Mechanical Engineering (574) Exam (525) India (462) Career (452) All Time Q&A (439) Mass Communication (427) BCA (417) Science (384) Computers & IT (Non-Engg) (383) Medicine & Health Sciences (381) Hotel Management (373) Civil Engineering (353) MCA (349) Tuteehub Top Questions (348) Distance (340) Colleges in India (334)
See More

Regex end modifier not returning results in a Go program

General Tech Learning Aids/Tools
Max. 2000 characters
Replies

usr_profile.png
Alex Wilson

User

( 6 months 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.
								 								 
							usr_profile.png
							
Rukhsar Fatima

User

( 6 months ago )

Check your regex pattern. For example,

Enter regex and subject: 
cat$ cat\ndog

Enter regex and subject: 
^cat cat\ndog         
cat

what's your interest