2012-10-19 76 views
4

使用grep,可以使用問號?來表示可選字符,即一個要匹配0或1次的字符。字符串操作,可選字符

$ foo=qwerasdf 

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

問題是Bash String Manipulation有類似的功能嗎?像

$ echo ${foo%fx?} 

回答

5

東西,你很可能在談論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}