使用 grep
,您可以使用问号 ?
来表示可选字符,即要匹配 0 次或 1 次的字符。
$ foo=qwerasdf
$ grep -Eo fx? <<< $foo
f
问题是 Bash String Manipulation 是否具有类似的功能?有点像
$ echo ${foo%fx?}
最佳答案
您可能在谈论 parameter expansion .它使用 shell 模式,而不是正则表达式,所以答案是否定的。
进一步阅读后,我注意到如果你
shopt -s extglob
你可以使用extended pattern matching它可以实现类似于正则表达式的功能,尽管语法略有不同。
检查一下:
word="mre"
# this returns true
if [[ $word == m?(o)re ]]; then echo true; else echo false; fi
word="more"
# this also returns true
if [[ $word == m?(o)re ]]; then echo true; else echo false; fi
word="mooooooooooore"
# again, true
if [[ $word == m+(o)re ]]; then echo true; else echo false; fi
也适用于参数扩展,
word="noooooooooooo"
# outputs 'nay'
echo ${word/+(o)/ay}
# outputs 'nayooooooooooo'
echo ${word/o/ay}
关于bash - 字符串操作,可选字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12971309/