gpt4 book ai didi

regex - "space"正则表达式中的 "expr match"字符有什么特别之处?

转载 作者:行者123 更新时间:2023-12-01 23:56:23 24 4
gpt4 key购买 nike

在 bash shell 中,我这样设置行:

line="total active bytes:         256"

现在,我只想从那一行中获取数字,所以我这样做:

echo $(expr match "$line" '.*\([[:digit:]]*\)' )

我什么也没得到。但是,如果我在正则表达式中的第一个反斜杠之前添加一个空格字符,那么它就可以工作了:

echo $(expr match "$line" '.* \([[:digit:]]*\)' )

为什么?

最佳答案

这个空间一点也不特别。发生的情况是,在第一种情况下,.* 匹配整个字符串(即“贪婪地”匹配),包括数字,并且因为您已经使用 * 量化了数字(与 \+ 相对),正则表达式的该部分允许匹配 0 个字符。

通过在数字匹配之前放置一个空格,第一部分只能匹配但不包括字符串中的最后一个空格,留下要匹配的数字 \([[:digit:]]*\)

关于regex - "space"正则表达式中的 "expr match"字符有什么特别之处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23438992/

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