如何在 Lua 中匹配一个句子

我试图创建一个正则表达式来匹配一个句子。

以下是代码片段。

local utf8 = require 'lua-utf8'
function matchsent(text)
  local text = text
  for sent in utf8.gmatch(text, "[^\r\n]+\.[\r\n ]") do
    print(sent)
    print('-----')
  end
end

然而,它不像 Python 那样工作。我知道 Lua 使用不同的正则表达式模式,并且它的正则表达式功能是有限的,但为什么上面的正则表达式会给我一个语法错误呢?在 Lua 中,一个句子匹配的正则表达式应该怎么写呢?

原文链接 https://stackoverflow.com/questions/39327759

点赞
stackoverflow用户3832970
stackoverflow用户3832970

注意Lua使用Lua模式,它们不是“正则”表达式,因为它们不能匹配正则语言。它们很难用于将文本分成句子,因为您需要考虑各种缩写、间距、大小写等因素。为了将文本分成句子,您需要一个NLP包,而不是一个或两个正则表达式,因为任务非常复杂。

关于

为什么上面的正则表达式会给我语法错误?

您需要在Lua _patterns_中使用%符号转义特殊符号。以下是示例代码:

function matchsent(text)
    for sent in string.gmatch(text, '[^\r\n]+%.[\r\n ]') do
        print(sent)
        print("---")
    end
end
matchsent("Some text here.\nShow me")

在线演示

2016-09-05 09:45:19