mmhmmh here_is_you 05451ab8 888
mmhmmh \w* ([ab0-9]*) \d*
echo "mmhmmh here_is_you 05451ab8 888" | sed -n 's/mmhmmh \w* \([ab0-9]*\) \d*/\1/p'
05451ab8888
代替05451ab8
为什么sed不尊重我的正则表达式?我检查了一下,我的正则表达式应该正确选择了预期的结果。
答案 0 :(得分:-1)
正如Cyrus在评论链接中指出的那样,\d
确实存在问题,请使用[0-9]
echo "mmhmmh here_is_you 05451ab8 888" | sed -n 's/mmhmmh [a-zA-Z0-9_]* \([ab0-9]*\) [0-9]*/\1/p'
05451ab8
或[[:digit:]]
echo "mmhmmh here_is_you 05451ab8 888" | sed -n 's/mmhmmh [[:alnum:]_]* \([ab0-9]*\) [[:digit:]]*/\1/p'
05451ab8
正如trpleee指出的那样,也不要使用\w
。