我想在Lua中处理日语词汇(LuaTeX具体)。词汇表存储在要读取的文本文件中。在读取文件的每一行时,单词应该用正则表达式匹配(行写成:
| がくせい | student |
):
function readFile(fn)
local file = assert(io.open(fn, "r"))
local contents = file:read("*a")
file:close()
return contents
end
function processTest(contents)
for line in contents:gmatch("%a+") do
print(line)
end
end
a = readFile("vocabulary.org")
processTest(a)
现在的问题是只打印英文单词:
student
我必须提到我是Lua和LuaTeX的新手,所以如果有更好的方法,我会很高兴知道。
无论如何,是否有可能获得日语单词?
答案 0 :(得分:4)
您无法使用%a
。它只匹配一个八位字节(与语言环境相关,但通常只有一个字节,用于编码ASCII或Latin-1中的字母。)
要匹配UTF-8编码的字母,您需要将它们分解为字节范围,如示例here中所示。
例如,UTF-8编码的平假名的某些模式可能包括:
(\227\129[\129-\191])
(\227\130[\128-\160])
匹配所有 unicode字母(需要包含数百个子范围)的模式的完整列表将是不实用的。
答案 1 :(得分:1)