在Lua中,模式^[%w-.]+$的含义是什么?

我刚刚发现这个模式,但我实在不理解:

^[%w-.]+$

你能给我一些符合这个表达式的例子吗?

点赞
用户1078583
用户1078583

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

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

解释

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

参考文献

Lua Patterns

2014-07-10 05:04:06
用户460557
用户460557

实际上它将匹配到空。因为有一个错误:w-这是文本范围的开始,但是它顺序不正确。所以应该使用%w\ -

^[%w\-.]+$

意思是:

  • ^ 断言字符串的开头位置。

  • [%w\-.]+ 匹配下列列表中的任意单个字符:

    1. + 量词:出现一次或更多次,尽可能多地回滚 [贪婪模式]。
    2. %w 列表中的单个字符,区分大小写 [Lua]。
    3. \- 匹配字符"-"本身。
    4. . 匹配一个字符。
  • $ 断言字符串的结尾位置。

编辑

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

如 @zx81 的评论:

  • %w 在 Lua 中是 \ w,表示任何字母数字字符加上“_”
2014-07-10 05:04:58