You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash正则表达式匹配变音字符异常问题咨询

Bash正则表达式[a-z]匹配变音字符的疑问

我在Bash中使用正则表达式校验字符串是否仅包含小写a-z字符时,遇到了异常行为:grep和sed的表现一致,但Python 3.9的结果符合预期。我想知道:这是操作失误导致的吗?属于Bug吗?如果是Bug,应该向何处反馈?

测试案例

小写š被判定为属于a-z范围

[[ 'š' =~ ^[a-z]$ ]] && echo sane || echo nope
sane

[[ 'š' =~ [a-z] ]] && echo sane || echo nope
sane

grep '^[a-z]$' <<<'š' && echo sane || echo nope
š
sane

sed 's/^[a-z]$/a/' <<<'š'
a

小写ž被判定为不属于a-z范围

编辑补充:因为ž在字母表中位于z之后,超出了a-z范围。

[[ 'ž' =~ ^[a-z]$ ]] && echo sane || echo nope
nope

[[ 'ž' =~ [a-z] ]] && echo sane || echo nope
nope

grep '^[a-z]$' <<<'ž' && echo sane || echo nope
nope

sed 's/^[a-z]$/a/' <<<'ž'
ž

大写Š被判定为不属于a-z范围

[[ 'Š' =~ ^[a-z]$ ]] && echo sane || echo nope
nope

[[ 'Š' =~ [a-z] ]] && echo sane || echo nope
nope

grep '^[a-z]$' <<<'Š' && echo sane || echo nope
nope

sed 's/^[a-z]$/a/' <<<'Š'
Š

大写Š被判定为属于A-Z范围

[[ 'Š' =~ ^[A-Z]$ ]] && echo sane || echo nope
sane

[[ 'Š' =~ [A-Z] ]] && echo sane || echo nope
sane

grep '^[A-Z]$' <<<'Š' && echo sane || echo nope
Š
sane

sed 's/^[A-Z]$/A/' <<<'Š'
A

环境信息

Bash版本

GNU bash, version 5.1.8(1)-release (x86_64-redhat-linux-gnu)

grep版本

grep (GNU grep) 3.6

sed版本

sed (GNU sed) 4.8

本地化设置

locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

Python测试结果

python3 -c 'import re ;print("sane" if re.match(r"^[a-z]$", "š") else "nope")'
nope

python3 -c 'import re ;print("sane" if re.match(r"^[a-z]$", "s") else "nope")'
sane

补充验证

编辑补充:有用户指出,ž只是特殊情况,因为它在字母表中位于z之后。对于字母表中位于a-z之间的变音字符(如š和č),匹配行为一致。要排除所有这类字符,需设置LC_ALL=C。

[[ 'č' =~ ^[a-z]$ ]] && echo sane || echo nope
sane

LC_CTYPE=C
# 或更严格的设置:LC_ALL=C

[[ 'č' =~ ^[a-z]$ ]] && echo sane || echo nope
nope

最终疑问

正则表达式[a-z]范围匹配变音字符是否属于预期行为?(这完全不符合我的预期。另外,我是否操作有误?这是Bug吗?如果是Bug,应向何处反馈?)


内容的提问来源于Stack Exchange,提问作者McLayn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 17:02:03