字符串操作,可选字符

时间:2012-10-19 09:31:38

标签: bash

使用grep,您可以使用问号?来表示一个可选字符,即一个匹配0或1次的字符。

$ foo=qwerasdf

$ grep -Eo fx? <<< $foo
f

问题是Bash String Manipulation有类似的功能吗?像

这样的东西
$ echo ${foo%fx?}

1 个答案:

答案 0 :(得分:6)

你可能在谈论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}