gpt4 book ai didi

regex - 为什么 grep 比它应该匹配的更多,例如 "^[\s]*set breakpoint.*in"匹配 "set breakpoint 1 at main.c:5"吗?

转载 作者:行者123 更新时间:2023-11-29 09:46:50 29 4
gpt4 key购买 nike

模式.txt

^[\s]*set breakpoint.*if
^[\s]*set breakpoint.*in
^[\s]*set breakpoint.*skip

脚本.txt

set breakpoint 1 at main.c:5
set breakpoint 2 at main.c:6
set breakpoint 3 at main.c:7
set breakpoint 4 if

例子和意想不到的结果

当我运行 cat "${script.txt}"| grep -f patterns.txt 结果是:

set breakpoint 1 at main.c:5 // WHY DOES THIS MATCH???
set breakpoint 2 at main.c:6 // WHY DOES THIS MATCH???
set breakpoint 3 at main.c:7 // WHY DOES THIS MATCH???
set breakpoint 4 if

同样适用于:

cat "${script.txt}" | grep -E '^[\s]*set breakpoint.*if|^[\s]*set breakpoint.*in|^[\s]*set breakpoint.*skip'

最佳答案

是因为breakpoint.*in火柴breakpoint <digit> at main在前 3 行( mainin 结尾)。

您应该在您的模式中使用结束 anchor ,如下所示:

cat patterns.txt
^\s*set breakpoint.*if$
^s\s*et breakpoint.*in$
^s\s*et breakpoint.*skip$

否则:

^\s*set breakpoint.*i[fn]$
^s\s*et breakpoint.*skip$

关于regex - 为什么 grep 比它应该匹配的更多,例如 "^[\s]*set breakpoint.*in"匹配 "set breakpoint 1 at main.c:5"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35465247/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com