我正在学习如何在Erlang中使用正则表达式获取字符串。请解释一下为什么当我对一个值为0到255的元素列表执行正则表达式时,大于127的值会落入结果列表中?
Expected = true,
ValidCharacterList = lists:seq(0, 255),
RegularExpression = "[[:ascii:]]",
{ok, MP} = re:compile(RegularExpression),
{match, _} = re:run(ValidCharacterList, MP),
Result = true,
?assertEqual(Expected, Result).
结果是该序列的所有元素(从0到255)。
Full code example .
More code example秒
1条答案
按热度按时间dffbzjpn1#
POSIX的
:ascii:
被定义为[\x00-\x7F]
。另一个字符类ascii错误地匹配了Latin-1字符,而不是POSIX指定的0-127范围。如果不改变其他类的行为,这个问题就无法解决,所以我们建议将范围改为[\0-\x7f]。