Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 字符串操作,可选字符_Bash - Fatal编程技术网

Bash 字符串操作,可选字符

Bash 字符串操作,可选字符,bash,Bash,使用grep,您可以使用问号?表示可选字符,该字符将匹配0或1次 $ foo=qwerasdf $ grep -Eo fx? <<< $foo f 你可能在说。它使用shell模式,而不是正则表达式,因此答案是否定的 进一步阅读后,我注意到如果你 shopt -s extglob 您可以使用它来实现类似于regex的功能,尽管语法略有不同 看看这个: word="mre" # this returns true if [[ $word == m?(o)re ]]; the

使用
grep
,您可以使用问号
表示可选字符,该字符将匹配0或1次

$ foo=qwerasdf

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

你可能在说。它使用shell模式,而不是正则表达式,因此答案是否定的

进一步阅读后,我注意到如果你

shopt -s extglob
您可以使用它来实现类似于regex的功能,尽管语法略有不同

看看这个:

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}
word="noooooooooooo"
# outputs 'nay'
echo ${word/+(o)/ay}
# outputs 'nayooooooooooo'
echo ${word/o/ay}