我怎样才能只使用正则表达式组匹配的内容?
例如,来自:
some text ... <a href='...'/user/9082/>... </a>
仅来自/user/9082/
的数字:
9082
我尝试了什么:
echo "some text ... <a href='...'/user/9082/>3435435345345</a>" | grep -Eo "/user/([0-9]+)/"
答案 0 :(得分:2)
使用sed
。
$ echo "some text ... <a href='...'/user/9082/>3435435345345</a>" |
> sed -E 's|^.*/user/([0-9]+)/.*$|\1|'
9082
您说“我也可以使用sed
和其他方法”暗示您知道sed
是正确的工具,但您不想使用它。你能详细说明原因吗? grep
用于搜索,sed
用于格式化。
答案 1 :(得分:2)
您可以使用bash正则表达式:
str="some text ... <a href='...'/user/9082/>... </a>"
re="/user/([0-9]+)/"
[[ $str =~ $re ]] && echo ${BASH_REMATCH[1]}
答案 2 :(得分:1)
使用grep
echo "some text ... <a href='...'/user/9082/>3435435345345</a>" | grep -o '\/user\/[0-9]\+\/'