我想確保一個變量不包含特定字符(在這種情況下,「α」),但下面的代碼失敗(返回1):匹配Unicode字符
FOO="test" && [[ $FOO =~ '^[^α]*$' ]]
編輯:根據以下stema的反饋更改模式,要求僅匹配從開始到結束的「非α」字符。
用例如, 'x'按預期工作。爲什麼它會以'α'失敗,我該如何完成這項工作?
系統信息:
$ zsh --version
zsh 4.3.11 (i386-apple-darwin11.0)
$ locale
LANG="en_GB.UTF-8"
LC_COLLATE="en_GB.UTF-8"
LC_CTYPE="en_GB.UTF-8"
LC_MESSAGES="en_GB.UTF-8"
LC_MONETARY="en_GB.UTF-8"
LC_NUMERIC="en_GB.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_ALL="en_GB.UTF-8"
編輯2:我現在測試運行Ubuntu 11.10與4.3.11的zsh具有相同區域設置在Linux機器上,並且有它的工作原理 - 即FOO="test" && [[ $FOO =~ '^[^α]*$' ]]
回報的成功。我正在運行Mac OS X 10.7.2。
哦,對。所以它不一定需要匹配整個字符串。是的,那麼你是對的,它應該是'FOO ='test'&& [[$ FOO =〜'^ [^α] * $']]''。但那仍然失敗。將「α」更改爲「x」會成功,因此在此處使用「α」字符時必定會有失敗的情況。 – beta 2011-12-18 09:28:20