echo $line
Thisisaline.
我想知道這是爲什麼不工作:
if [[ "$line" =~ "[a-zA-Z]+\.$" ]] ; then echo "hello"; fi
上述正則表達式沒有給出輸出。
echo $line
Thisisaline.
我想知道這是爲什麼不工作:
if [[ "$line" =~ "[a-zA-Z]+\.$" ]] ; then echo "hello"; fi
上述正則表達式沒有給出輸出。
某些帶有bash的OS版本會爲您提供輸出。所以它取決於你得到你的更新。 然而,沒有正則表達式可以使用通配符擴展
shopt -s extglob
case "$line" in
+([a-zA-Z]).) echo "hello";;
esac
如果不行,用正則表達式不帶引號
是的+1,它是引號..它們不是必需的,除此之外,不應該在這裏使用(除非你試圖匹配一個引用;所以如果你想在你的模式中有一個空格,你必須轉義它, \'(在\之後有一個空格...另請注意,要將整行匹配爲字母,您必須添加一個前導'^'和尾部'$',否則它將匹配'123 456 abc。cat和鼠標' – 2011-05-01 07:59:16
@fred,好的,所以你應該把它作爲一個答案,所以OP可以知道。:) – ghostdog74 2011-05-01 08:07:26
嘗試
if [[ $line =~ [a-zA-Z]+\. ]] ; then echo hello; fi
的問題是,你是用引號...
在bash正則表達式中,不需要引號,而且,不應該使用它們(除非你試圖匹配一個引號(在這種情況下你可以跳過它)\"
)...此外,如果你想在你的模式中的空間,你必須逃避它,\
(後斜線後有一個空格...
還要注意,以匹配整個行作爲字母,您必須添加領先的^
和尾隨$
,否則它將匹配以下行:123 456 abc. cat and mouse
您的正則表達式模式不允許使用空格嗎? – 2011-05-01 02:59:23
它沒有,我修改了匹配字符串。 – abc 2011-05-01 03:00:22