gpt4 book ai didi

regex - grep 正则表达式 空白行为

转载 作者:行者123 更新时间:2023-12-03 05:15:46 25 4
gpt4 key购买 nike

我有一个文本文件,其中包含以下内容:

12,34 EUR 
5,67 EUR
...

“EUR”之前有一个空格,我忽略 0,XX EUR。

我尝试过:

grep '[1-9][0-9]*,[0-9]\{2\}\sEUR' => 不匹配!

grep '[1-9][0-9]*,[0-9]\{2\} EUR' => 成功了!

grep '[1-9][0-9]*,[0-9]\{2\}\s*EUR' => 成功了!

grep '[1-9][0-9]*,[0-9]\{2\}\s[E]UR' => 成功了!

有人可以解释一下,为什么我不能使用 \s\s*\s[E] 匹配?

操作系统:Ubuntu 10.04,grep v2.5

最佳答案

这看起来像是 grep 2.5 和更新版本之间处理 \s 的行为差异(旧 grep 中的错误?)。我用 grep 2.5.4 确认了你的结果,但是当使用 grep 2.6.3 (Ubuntu 10.10) 时,你的所有四个 grep 都可以工作。

注意:

GNU grep 2.5.4
echo "foo bar" | grep "\s"
(doesn't match)

GNU grep 2.6.3
echo "foo bar" | grep "\s"
foo bar

可能更少的麻烦(因为 \s 没有记录):

Both GNU greps
echo "foo bar" | grep "[[:space:]]"
foo bar

我的建议是避免使用 \s ...使用 [\t]*[[:space:]] 或相反,类似的东西。

关于regex - grep 正则表达式 空白行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4233159/

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