我无法找到Lua中标点符号集"%p"
中哪些字符组合的文档。
答案 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函数ispunct
(C 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
-- !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~