【问题标题】:What does this pattern ^[%w-.]+$ mean in Lua?这个模式 ^[%w-.]+$ 在 Lua 中是什么意思?
【发布时间】:2014-07-10 04:56:49
【问题描述】:

刚刚遇到这种模式,我真的不明白:

^[%w-.]+$

你能给我一些例子来匹配这个表达式吗?

【问题讨论】:

  • 这很简单,我建议你阅读一下正则表达式。
  • 其实这个来自一个lua脚本:local return_domain_name = urlReq:match("^[%w-.]+$")
  • 这就是regex tag info 声明您应该始终在标签中包含正则表达式风格的原因。
  • 我删除了 regex 标签,因为 Lua 模式不是正则表达式,请参阅its tag infor 了解更多信息。

标签: lua lua-patterns


【解决方案1】:

在 Lua 中有效,其中 %w (几乎)相当于其他语言中的 \w

^[%w-.]+$ 表示匹配完全由字母数字字符(字母和数字)、破折号或圆点组成的字符串。

说明

  • ^ 锚断言我们位于字符串的开头
  • 字符类[%w-.] 匹配一个字符,它是字母或数字(%w 的含义)、破折号或句点。这相当于 JavaScript 中的 [\w-.]
  • + 量词匹配此类字符一次或多次
  • $ 锚断言我们在字符串的末尾

参考

Lua Patterns

【讨论】:

    【解决方案2】:

    实际上它不会匹配任何东西。因为有一个错误:w- 这是一个文本范围的开始,它是无序的。所以应该改成%w\-

    ^[%w\-.]+$

    意思:

    • ^ 断言字符串开头的位置
    • [%w\-.]+ 匹配下面列表中的单个字符
      1. +量词:一次到无限次,尽可能多次,按需回馈[贪心]
      2. %w 列表中的单个字符 %w 字面意思(区分大小写)
      3. \- 匹配字符 - 字面意思
      4. . 文字字符。
    • $ 在字符串末尾断言位置

    编辑

    由于 OP 更改了问题和标签,此答案不再适合作为正确答案。这是基于POSIX 的答案。

    正如@zx81 评论:

    • %wLua 中是 \w,表示任何字母数字字符加上“_”

    【讨论】:

    • 仅供参考,您的答案不再有效。事实证明,%w 在 Lua 中是 \w。 :)
    • 嗨@zx81 我将对其进行编辑以放置它是基于 POSIX 的答案的信息,并且它不再适合 OP 更改问题。谢谢。
    猜你喜欢
    • 2013-08-01
    • 2010-11-19
    • 1970-01-01
    • 1970-01-01
    • 2015-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-05
    相关资源
    最近更新 更多