正则表达式从字符串中提取用户名

问题描述 投票:0回答:1

输入字符串示例 - #J219568abpwrk1

我想从上面提取字符串“abpwrk1”。

该字符串始终以 #J 开头,后跟 5 或 6 位数字。它表示职位编号。 接下来是我要提取的用户名。 用户名可以是字母数字,但可以假设它始终以字母开头。

尝试过以下: a="#J219568abpwrk1"; a="${a#*[a-z]}";回显$a; 输出:bpwrk1

我需要完整的用户名。 任何专家都可以在 bash 中帮忙解决这个问题吗?

regex bash shell pattern-matching
1个回答
0
投票

字符串始终以

#J
开头,后跟 5 或 6 位数字。

如果是硬编码数据结构,值的长度固定,您可以查看数组的切片表示法。

一个最小的例子

#!/bin/bash

INPUT="#J123456abcdef0"

echo "${INPUT:8:7}"

将产生

的输出
abcdef0

类似问答


如果值的长度是动态的,您可以查看以下最小示例。

#!/bin/bash

INPUT="#J123456abcdef0"

echo ${INPUT} | grep -o '[a-z]*.$'

输出

abcdef0

因为它捕获从输入字符串的第一个较低字符开始一直到结尾的所有较低字符。

© www.soinside.com 2019 - 2024. All rights reserved.