1
在bash shell中正則表達式匹配的空字符串的bash
testvar=
echo $testvar
[[ $testvar =~ ^M* ]] && echo "foo"
foo
是不是正則表達式模式匹配以「M」串,其次是什麼?
在bash shell中正則表達式匹配的空字符串的bash
testvar=
echo $testvar
[[ $testvar =~ ^M* ]] && echo "foo"
foo
是不是正則表達式模式匹配以「M」串,其次是什麼?
NO *表示0或更多,所以空字符串會匹配,添加一個強制M或使用+而不是*,它會做你想做的。
你的測試應該看起來像:
[[ $testvar =~ ^MM* ]] && echo "foo"
或
[[ $testvar =~ ^M+ ]] && echo "foo"
爲了配合開始M
一個字符串,你有兩個選擇:
[[ $testvar = M* ]] # use glob pattern matching
或
[[ $testvar =~ ^M ]] # use a regular expression
的關鍵問題,您的嘗試是,你已經p直接在M
之後的*
,該M
在字符串的開始處匹配零個或更多個Ms(即,任何東西)。我使用的模式在開始時匹配任何帶有M的字符串。
謝謝。我得到了'+'解決方案,但是如何使'M'成爲強制性的?「? – pkaramol
在M *之前加上一個M,因此MM *你可以在其中放置任何字母,但在你的情況下,該模式以M字符開頭,然後M *表示零個或多個M字符:) – Rob