我正在尝试编写一个程序,从终端输入打印 IPv4 地址的无效部分。
这是我的代码:
package chapter4
import (
"bufio"
"fmt"
"os"
"regexp"
"strings"
"time"
)
func IPV4() {
var f *os.File
f = os.Stdin
defer f.Close()
scanner := bufio.NewScanner(f)
fmt.Println("Exercise 1, Chapter 4 - Detecting incorrect parts of IPv4 Addresses, enter an address!")
for scanner.Scan() {
if scanner.Text() == "STOP" {
fmt.Println("Initializing Level 4...")
time.Sleep(5 * time.Second)
break
}
expression := "(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])"
matchMe, err := regexp.Compile(expression)
if err != nil {
fmt.Println("Could not compile!", err)
}
s := strings.Split(scanner.Text(), ".")
for _, value := range s {
fmt.Println(value)
str := matchMe.FindString(value)
if len(str) == 0 {
fmt.Println(value)
}
}
}
}
我的思考过程是,对于每个终端IP地址输入,我用“.”分割字符串。
然后我迭代结果[]string并将每个值与正则表达式匹配。
由于某种原因,正则表达式不匹配的唯一情况是输入中存在字母字符。每个数字,无论大小或组成,都与我的表达有效匹配。
我希望你能帮助我找出问题所在,如果有更好的方法,我洗耳恭听。谢谢!
慕桂英4014372
守着一只汪
相关分类