Lua标点符号字符串模式中包含哪些字符(%p)?

时间:2014-06-13 00:47:31

标签: lua punctuation lua-patterns

我无法找到Lua中标点符号集"%p"中哪些字符组合的文档。

3 个答案:

答案 0 :(得分:9)

答案是依赖于语言环境,它是C函数的直接接口 实际上,如果有一个类似于Lua函数的C标准函数,那么即使不查看具体情况,Lua函数几乎可以包含C函数,疣和所有函数。 (这是file:read()在5.2中仍然有trouble reading text with embedded zeroes的部分原因,甚至可能在5.3中有。)

虽然Amaden为" C"提供了一个很好的答案。语言环境和ColonelThirtyTwo提供了检查当前语言环境的正确方法,C标准只说:

  

ispunct() :ispunct函数测试任何打印字符,该字符是特定于语言环境的标点字符集之一,其中isspace和isalnum都不为真。在" C"   locale,ispunct为每个没有isspace的打印字符返回true   也不是isalnum是真的

答案 1 :(得分:7)

%p与C函数ispunctC source v 5.2)匹配,匹配以下内容:

041 ‘‘!’’     042 ‘‘ ’’       043 ‘‘#’’       044 ‘‘$’’       045 ‘‘%’’ 
046 ‘‘&’’     047 ‘‘’’’       050 ‘‘(’’       051 ‘‘)’’       052 ‘‘*’’ 
053 ‘‘+’’     054 ‘‘,’’       055 ‘‘-’’       056 ‘‘.’’       057 ‘‘/’’ 
072 ‘‘:’’     073 ‘‘;’’       074 ‘‘<’’       075 ‘‘=’’       076 ‘‘>’’ 
077 ‘‘?’’     100 ‘‘@’’       133 ‘‘[’’       134 ‘‘\’’       135 ‘‘]’’ 
136 ‘‘^’’     137 ‘‘_’’       140 ‘‘‘’’       173 ‘‘{’’       174 ‘‘|’’ 
175 ‘‘}’’     176 ‘‘~’’

(来自man ispunct

答案 2 :(得分:6)

找到它们的小脚本:

for i=0,255 do
    if string.match(string.char(i), "%p") then
        io.write(string.char(i))
    end
end
io.write("\n")

-- $ luajit test.lua
-- !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~